1. 程式人生 > >小白學分散式程式開發2-分散式架構下系統間互動的5種通訊模式

小白學分散式程式開發2-分散式架構下系統間互動的5種通訊模式

分散式架構下系統間互動的5種通訊模式

1、request/response模式(同步模式)

       客戶端發起請求一直阻塞到服務端返回請求為止。普通的HTTP請求都屬於同步模式。


2、Callback(非同步模式)

        客戶端傳送一個RPC請求給伺服器,服務端處理後再發送一個訊息給訊息傳送端提供的callback端點,此類情況非常合適以下場景:A元件傳送RPC請求給B,B處理完成後,需要通知A元件做後續處理。Jquery中的回撥函式都是這種模式。


3、Future模式

        對於多執行緒,如果執行緒A要等待執行緒B的結果,那麼執行緒A沒必要等待B,直到B有結果,可以先拿到一個未來的Future,等B有結果後再取真實的結果。



舉例:小明同學一天丟失了自己的身份證,他就去派出所補辦,警察叔叔說因為補辦要幾個月時間,先給小明一張臨時身份證來用。小明拿了臨時身份證後也可以辦很多事情,等了三個月後小明拿到了補辦的身份證。

另外在網站上常見的一個例子就是:網路圖片的下載,剛開始是通過模糊的圖片來代替最後的圖片,等下載圖片的執行緒下載完圖片後再做替換。而在這個過程中主程式可以做一些其他的事情。

4、Oneway模式(單向模式)

       只負責傳送訊息,不等待伺服器迴應且沒有回撥函式觸發,即只發送請求不等待應答。此方式傳送訊息的過程耗時非常短,一般在微秒級別。

       應用場景:適用於某些耗時非常短,但對可靠性要求並不高的場景,例如傳送者程式向MQ中傳送訊息。


舉例:發小廣告的,只管發,不求結果

5、Reliable模式

       為保證通訊可靠,將藉助於訊息中心來實現訊息的可靠送達,請求將做持久化儲存,在接收方線上時做送達,並由訊息中心保證異常重試。這是分散式架構程式開發中最常用的模式。


舉例:看過潛伏嗎?這裡的B就相當於潛伏在軍統的地下黨餘則成,這A就相當於他的上級領導,他們兩相互知道對方的存在,但從不碰面,而C就是他們之間實現訊息對接的傳遞者。上級領導A將行動指令交給訊息傳遞者C,C用盡一切辦法實現將指令傳達給B餘則成。而一旦C暴露,則會與一個替補者D接替C的工作。

不要忘記關注我們的微信公眾號:小白程式猿!!