Microservice Patterns - 3.1 Microservice 架構中的行程間通訊 - 概觀
參考資料
Microservice 架構中的行程間通訊概觀
互動風格
維度一
- 一對一 — 每個 client 請求只由一個服務處理
- Request/response:client 發送請求並等待回應
- 非同步 request/response:client 發送請求給服務但不等待,服務稍後回應
- 單向通知:client 發送通知給服務
- 一對多 — 每個請求由多個服務處理
維度二
- 同步 — client 期望服務及時回應,甚至可能在等待時阻塞。
- 非同步 — client 不會阻塞,回應(如果有的話)不一定會立即送出

使用 SEMANTIC VERSIONING
- MAJOR — 當你對 API 做了不相容的變更
- MINOR — 當你對 API 做了向後相容的增強
- PATCH — 當你做了向後相容的 bug 修正
穩健性原則 / Postel's law
對自己做的事要保守,對從別人那裡接受的東西要寬容
(常被改寫為「對你送出的東西要保守,對你接受的東西要寬容」)。
做出重大的破壞性變更
可以讓 API gateway 把舊版 API 轉譯到新版 API 的實作
- /v1/... 和 /v2/...
- 在 HTTP header 中,例如GET /orders/xyz HTTP/1.1Accept: application/vnd.example.resource+json; version=1
訊息格式
- 使用跨語言的訊息格式。
- 例如不要使用 Java serialization
- 兩大類別
- 文字訊息格式。例如 JSON、XML
- 優點:這些格式不僅人類可讀,而且是自我描述的
- 缺點:
- 訊息容易冗長。例如 XML element name
- 解析文字的額外開銷,尤其是訊息很大的時候
- 二進位訊息格式。例如 Proto Buffer