微服務架構中的進程間通信(交互方式、消息格式)

一、交互方式

在爲服務選擇的API選擇進程間通信機制之前,首先要考慮服務與其客戶端的交互方式。

交互方式的選擇影響應用程序的可用性。

交互方式可以幫助選擇合適的集成測試策略。

交互方式分爲兩個維度

1、一對一和一對多

一對一:每個客戶端請求由一個服務實例處理;

一對多:每個客戶端請求由多個服務實例處理。

2、同步和異步

同步:客戶端請求需要服務端實時響應,客戶端等待響應時可能導致阻塞;

異步:客戶端請求不會阻塞進程,服務端的響應可以是非實時的。

交互方式組合見表格:

 

一對一

一對多

同步模式

請求/響應(服務緊耦合)

異步模式

異步請求/響應

單向通知

發佈/訂閱

發佈/異步響應

 

二、API版本

如何定義API取決於使用的進程間通信機制。如果使用的是消息機制,則API由消息通道、消息類型、消息格式組成;如果使用的是HTTP,則API由URL、HTTP動詞以及請求和響應格式組成。

語義化版本控制

作用:指定如何使用版本號、並且以正確的方式遞增版本號。

要求:版本號由三部分組成-MAJOR.MINOR.PATCH。必須按照如下方式遞增版本號:

MAJOR:對API進行不兼容的更改時

MINOR:對API進行向後兼容的增強時

PATCH:向後兼容的錯誤修復時;

 三、消息格式

消息格式的選擇會對進程間通信的效率、API的可用性、可演化性產生影響。

消息的格式分爲兩類:文本、二進制。

基於文本的消息格式

常用的:JSON、XML

好處:可讀性高、自描述的,允許消息的接收方只挑選它們感興趣的值。對消息結構的修改可以做到很好的後向兼容。

弊端:消息過於冗長,特別是XML;解析文本引入的額外開銷,尤其是消息較大時。

JSON消息:命名屬性的集合;XML消息:命名元素和值的集合。

二進制消息格式

常用的:Protocol Buffers、Avro(提供類強類型定義的IDL-接口描述文件,用於定義消息的格式)

 筆記來自:《微服務架構設計模式》一書,作者 [美] 克里斯·理查森 著,喻勇譯  第三章P63-70

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章