天天看點

關于中間件

 在用戶端與伺服器進行通訊時.用戶端調用後,必須等待服務對象完成處理傳回結果才能繼續執行。

 客戶與伺服器對象的生命周期緊密耦合,客戶程序和服務對象程序都都必須正常運作;如果由于服務對象崩潰或者網絡故障導緻使用者的請求不可達,客戶會受到異常

 點對點通信: 客戶的一次調用隻發送給某個單獨的目标對象。

如下圖所示:

在網絡通訊中,http請求預設采用同步請求方式,基于請求與響應模式。

用戶端想伺服器端發送請求的時候,如果伺服器端因為網絡延遲,不可達情況可能會導緻用戶端也受到影響。

處理好服務降級、熔斷、隔離、限流。

關于中間件

上圖是同步的過程,如果會員服務沒有及時響應, 訂單服務得不到響應,用戶端請求訂單服務時候也會受牽連。

網絡通訊采用同步的優缺點:

  優點:及時響應資料給用戶端,整個過程同步

  缺點: 可能會導緻程式阻塞等待,效率低 

如果訂單服務調用會員服務不通的情況,如何保證資料一緻性問題?

  如果傳統的http方式,采用補償機制(重試一次),存放日志表+定時Job掃描一遍,伺服器端考慮網絡延遲送出資料幂等性問題(通過全局Id,或者token區分請求)

面向消息的中間件(MessageOrlented MiddlewareMOM)較好的解決了以上問

題。發送者将消息發送給消息伺服器,消息伺服器将消感存放在若千隊列中,在合适

的時候再将消息轉發給接收者。

這種模式下,發送和接收是異步的,發送者無需等

待; 二者的生命周期未必相同: 發送消息的時候接收者不一定運作,接收消息的時候

發送者也不一定運作;一對多通信: 對于一個消息可以有多個接收者。

消息隊列中間件是分布式系統中重要的元件,主要解決應用解耦,異步消息,流量削鋒等問題,實作高性能,高可用,可伸縮和最終一緻性架構。

目前使用較多的消息隊列有 

ActiveMQ

RabbitMQ 

ZeroMQ

Kafka

MetaMQ

RoketMQ

繼續閱讀