一、分布式領域所說的同步與異步通信環(huán)境具體是指什么
在分布式領域,同步和異步通信環(huán)境是指不同的通信模型。這兩種通信模型都可以用于在分布式系統(tǒng)中進行進程間的通信。
同步通信環(huán)境中,發(fā)送方需要等待接收方確認才能繼續(xù)執(zhí)行下面的操作,直到接收方已經(jīng)成功接收到消息后,發(fā)送方才會被釋放繼續(xù)執(zhí)行。這意味著,在同步通信環(huán)境中,發(fā)送方和接收方必須遵循嚴格的同步規(guī)則,以便協(xié)同工作和溝通。同步通信環(huán)境可以確保消息的可靠性和順序性,但也可能會導致隊列阻塞和死鎖等問題。
異步通信環(huán)境中,發(fā)送方并不需要等待接收方確認,即使接收方并沒有響應,發(fā)送方仍然可以繼續(xù)執(zhí)行下面的操作。在異步通信環(huán)境中,每個進程都可以獨立地執(zhí)行,并且不需要等待其他進程的響應。這種自由度可能會帶來更高的性能和更好的并行性,但也可能會導致一些不確定性,例如消息丟失或亂序到達等問題。
二、分布式概述
1、什么是分布式系統(tǒng)
多個計算機或設備組合起來一起工作的系統(tǒng)。它的特點是在使用者看來,所有的接口看似都是由一個系統(tǒng)提供的;設備之間需要使用網(wǎng)絡通信;某個設備發(fā)生故障后,其他的設備可能是可用的。如WEB服務,存儲服務和應用服務通過網(wǎng)絡傳輸數(shù)據(jù),當存儲服務宕機后,應用服務可能還會使用緩存繼續(xù)提供服務。如電話服務,系統(tǒng)由轉機和終端共同提供服務,各個設備通過電話線通信。
網(wǎng)絡上很多文章所說的分布式大多數(shù)互聯(lián)網(wǎng)的WEB系統(tǒng),這是由于活躍著大多是WEB系統(tǒng)相關開發(fā)人員。但事實上分布式系統(tǒng)沒有那么單一,也沒有那么復雜,目前我們所使用的服務基本上都是分布式系統(tǒng)而分布式系統(tǒng)也僅僅是一組設備組成的工作集合。
2、為什么需要分布式系統(tǒng)
從分布式系統(tǒng)的特點說起,如果需要大數(shù)據(jù)量、高可用、可擴展、高性能,那么就需要分布式系統(tǒng)。如:
電話系統(tǒng)使用分布式設計,目的是實現(xiàn)系統(tǒng)的靈活性和可用性。WEB系統(tǒng)使用分布式設計,目的是提高可用性和并發(fā)以及性能。3、什么是分布式技術
多個計算機組合使用時,會面臨一些問題,如網(wǎng)絡通信、設備故障、并發(fā)等問題,而分布式技術就是為了解決這些問題的。
RPC 技術解決多個設備的通信問題。復制技術解決數(shù)據(jù)的備份問題和提升性能和并發(fā)。分片技術解決數(shù)據(jù)存儲量問題和提升性能。分布式鎖解決多個計算機組合時的并發(fā)讀寫問題。分布式緩存解決多個應用服務時本地緩存的一致性問題。分布式事務解決多個設備行為的一致性和隔離性問題。4、分布式系統(tǒng)的演變
集中式系統(tǒng)非集中式系統(tǒng)混合系統(tǒng)5、分布式系統(tǒng)的優(yōu)缺點
優(yōu)點:
提升系統(tǒng)并發(fā)、性能、可用性、擴展性、伸縮性等能力;節(jié)省成本,利用有限的計算機資源提供更好的服務;缺點:
多個設備的操作一致性和并發(fā)問題:用戶一個操作需要多個設備的多個操作時,如何實現(xiàn)操作失敗后各個設備的回滾和并發(fā)操作時的問題。通常使用分布式事務技術盡可能的解決,較好的方式還是避免。多個設備的數(shù)據(jù)一致性問題:無狀態(tài)服務的復制無需關注,但有狀態(tài)服務的復制由于通信延遲和并發(fā)原因會使得多個副本上數(shù)據(jù)不一致。通常使用一致性算法解決(Raft)。多個設備的通信問題:由于需要通絡進行通信,因此當網(wǎng)絡故障或波動后就會造成設備之間的通信斷開問題。通常使用重試和Fullback機制等解決。設備的故障率問題:集中式系統(tǒng)只有一臺設備,可以通過優(yōu)化環(huán)境減小故障率,而分布式系統(tǒng)中多個設備組合使用加大了故障率。通常使用復制技術提升系統(tǒng)高可用。6、分布式系統(tǒng)的類型
實際上,一個系統(tǒng)可能不僅僅是由某一類型的分布式系統(tǒng)獨立實現(xiàn)的,很可能是多個分布式類型的系統(tǒng)之間的相互組合,又構成一個大的分布式系統(tǒng)。
如WEB服務中,本身是一個分布式信息系統(tǒng),但其中可能使用了分布式存儲系統(tǒng)中的數(shù)據(jù)管理系統(tǒng)和消息系統(tǒng),還可能使用了分布式計算系統(tǒng)用于實現(xiàn)數(shù)據(jù)的計算與分析。
分布式存儲系統(tǒng)分布式計算系統(tǒng)分布式信息系統(tǒng)分布式嵌入系統(tǒng)7、分布式系統(tǒng)面臨的挑戰(zhàn)
分布式系統(tǒng)需要大量機器協(xié)作,面臨諸多的挑戰(zhàn):
異構的機器與網(wǎng)絡:分布式系統(tǒng)中的機器,配置不一樣,其上運行的服務也可能由不同的語言、架構實現(xiàn),因此處理能力也不一樣;節(jié)點間通過網(wǎng)絡連接,而不同網(wǎng)絡運營商提供的網(wǎng)絡的帶寬、延時、丟包率又不一樣。怎么保證大家齊頭并進,共同完成目標,這是個不小的挑戰(zhàn)。普遍的節(jié)點故障:雖然單個節(jié)點的故障概率較低,但節(jié)點數(shù)目達到一定規(guī)模,出故障的概率就變高了。分布式系統(tǒng)需要保證故障發(fā)生的時候,系統(tǒng)仍然是可用的,這就需要監(jiān)控節(jié)點的狀態(tài),在節(jié)點故障的情況下將該節(jié)點負責的計算、存儲任務轉移到其他節(jié)點。不可靠的網(wǎng)絡:節(jié)點間通過網(wǎng)絡通信,而網(wǎng)絡是不可靠的??赡艿木W(wǎng)絡問題包括:網(wǎng)絡分割、延時、丟包、亂序。相比單機過程調用,網(wǎng)絡通信最讓人頭疼的是超時:節(jié)點A向節(jié)點B發(fā)出請求,在約定的時間內沒有收到節(jié)點B的響應,那么B是否處理了請求,這個是不確定的。延伸閱讀1:同步的理解
同步就是指一個進程在執(zhí)行某個請求的時候,若該請求需要一段時間才能返回信息,那么這個進程將會一直等待下去,直到收到返回信息才繼續(xù)執(zhí)行下去;同步就相當于是 當客戶端發(fā)送請求給服務端,在等待服務端響應的請求時,客戶端不做其他的事情。當服務端做完了才返回到客戶端。這樣的話客戶端需要一直等待。用戶使用起來會有不友好。