在第一篇中定義了什麼是分佈式系統,可見消息是相當重要的。
網絡
分佈式系統交互模型分爲:異步
同步:分佈式
消息發送耗時有一個下限和上限性能
每一個進程有一個本地時鐘,偏移率在一個已知範圍內.net
異步:中間件
消息發送耗時沒有上限blog
進程本地時鐘偏移率是任意的隊列
通訊範式:進程
進程間通訊ci
遠程調用
間接通訊
消息的性能:
有效性,發送的消息最終都到達接收消息緩衝區
完整性,接收到的消息和發送的消息一致,沒有消息被傳遞兩次
遠程調用和進程間通訊都是同步的。但屬於不一樣層:
1.應用、服務 |
2.遠程調用和間接通訊 |
3.底層進程通訊原語、套接字、消息傳遞 send, recieve |
4.UDP和TCP |
2和3處於中間件層。
請求-應答模型須要考慮的故障:
發送的消息丟失(超時重發)
響應未到達,客戶端重發(過濾重複請求)
響應的消息丟失(冪等服務&保存上一次響應)
間接通訊的目的是空間和時間上的解耦,應對變化快的網絡條件和下游模塊。
時間耦合 | 時間解耦 | |
空間耦合 | RPC | 消息隊列 |
空間解耦 | 組播 | 間接通訊範型 |