分布式架構(gòu)下系統(tǒng)間交互的5種通信模式
-
request/response模式(同步模式)
客戶端發(fā)起請求一直阻塞到服務(wù)端返回請求為止集歇。普通的HTTP請求都屬于同步模式室囊。
-
Callback(異步模式)
客戶端發(fā)送一個RPC請求給服務(wù)器,服務(wù)端處理后再發(fā)送一個消息給消息發(fā)送端提供的callback端點圾浅,此類情況非常合適以下場景:A組件發(fā)送RPC請求給B吼句,B處理完成后,需要通知A組件做后續(xù)處理架专。Jquery中的回調(diào)函數(shù)都是這種模式。
-
Future模式
對于多線程玄帕,如果線程A要等待線程B的結(jié)果部脚,那么線程A沒必要等待B,直到B有結(jié)果裤纹,可以先拿到一個未來的Future委刘,等B有結(jié)果后再取真實的結(jié)果。
舉例:網(wǎng)絡(luò)圖片的下載鹰椒,剛開始是通過模糊的圖片來代替最后的圖片锡移,等下載圖片的線程下載完圖片后再做替換。而在這個過程中主程序可以做一些其他的事情漆际。
-
Oneway模式(單向模式)
只負(fù)責(zé)發(fā)送消息淆珊,不等待服務(wù)器回應(yīng)且沒有回調(diào)函數(shù)觸發(fā),即只發(fā)送請求不等待應(yīng)答奸汇。此方式發(fā)送消息的過程耗時非常短施符,一般在微秒級別往声。 應(yīng)用場景:適用于某些耗時非常短,但對可靠性要求并不高的場景戳吝,例如發(fā)送者程序向MQ中發(fā)送消息浩销。
舉例:發(fā)小廣告的,只管發(fā)听哭,不求結(jié)果
-
Reliable模式
為保證通信可靠慢洋,將借助于消息中心來實現(xiàn)消息的可靠送達,請求將做持久化存儲陆盘,在接收方在線時做送達且警,并由消息中心保證異常重試。這是分布式架構(gòu)程序開發(fā)中最常用的模式礁遣。
舉例:這里的B就相當(dāng)于潛伏在軍統(tǒng)的地下黨,這A就相當(dāng)于他的上級領(lǐng)導(dǎo)肩刃,他們兩相互知道對方的存在祟霍,但從不碰面,而C就是他們之間實現(xiàn)消息對接的傳遞者盈包。上級領(lǐng)導(dǎo)A將行動指令交給消息傳遞者C沸呐,C用盡一切辦法實現(xiàn)將指令傳達給B余則成。而一旦C暴露呢燥,則會與一個替補者D接替C的工作崭添。