參考資料  

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 的實作
  1. /v1/... 和 /v2/...
  2. 在 HTTP header 中,例如
    GET /orders/xyz HTTP/1.1
    Accept: application/vnd.example.resource+json; version=1 

訊息格式
  1. 使用跨語言的訊息格式。
  2. 例如不要使用 Java serialization
  3. 兩大類別
    1. 文字訊息格式。例如 JSON、XML
      1. 優點:這些格式不僅人類可讀,而且是自我描述的
      2. 缺點:
        1. 訊息容易冗長。例如 XML element name
        2. 解析文字的額外開銷,尤其是訊息很大的時候
    2. 二進位訊息格式。例如 Proto Buffer