分布式最終一致性算法
發(fā)布時間:
2022-11-10
分布式最終一致性算法以Gossip算法為基礎(chǔ)進(jìn)行設(shè)計(jì),Gossip算法具有簡單和高效的特征,同時具有很好的可擴(kuò)展性和魯棒性,采用無中心化設(shè)計(jì),能極大地避免集中式處理帶來的資源占用過高問題。
基于Gossip的分發(fā)協(xié)議具有良好的擴(kuò)展性和魯棒性,適用于一致性要求不高場景中的同步信息。當(dāng)一個節(jié)點(diǎn)要發(fā)送消息時,并不將消息發(fā)送給某個服務(wù)器,而是發(fā)送給一些隨機(jī)選擇的對等節(jié)點(diǎn);這些節(jié)點(diǎn)收到消息后,重復(fù)同樣過程,再將消息轉(zhuǎn)發(fā)給隨機(jī)選擇的節(jié)點(diǎn)。本質(zhì)上,Gossip協(xié)議是基于冗余和隨機(jī)機(jī)制來克服潛在的節(jié)點(diǎn)和鏈路失效的。
目前,流行的Gossip模型是反熵模型。該模型中,節(jié)點(diǎn)P隨機(jī)選取另一節(jié)點(diǎn)Q,并與Q交換更新信息。交換信息具體方法有以下3種:
①基于推(push)的方法:P僅將自身更新信息發(fā)送到Q;
②基于拉(pull)的方法:P僅從Q獲得更新信息;
③基于推/拉(push/pull)的方法:P和Q相互發(fā)送更新信息給對方。
Gossip協(xié)議的冗余通信會對網(wǎng)絡(luò)帶寬和CPU資源帶來巨大負(fù)載,這些負(fù)載限制了通信頻率,通信頻率又影響著算法收斂速度。因此,Gossip算法中應(yīng)盡量避免冗余通信,減少負(fù)面影響。
針對Gossip協(xié)議存在冗余通信導(dǎo)致的通信帶寬和CPU占用較多的問題,對Gossip協(xié)議的數(shù)據(jù)同步方式進(jìn)行了改進(jìn),將強(qiáng)一致性算法獲取的控制器節(jié)點(diǎn)信息注入Gossip協(xié)議中,減少Gossip協(xié)議的冗余通信。
Gossip為隨機(jī)更新的策略,通過消息發(fā)出概率判斷是否發(fā)送消息。針對策略的隨機(jī)性,通過向其中引入最近更新時長、數(shù)據(jù)狀態(tài)改變量等信息,影響消息發(fā)送的概率,加快數(shù)據(jù)一致性同步。
針對協(xié)議中的push/pull的信息交互,實(shí)現(xiàn)節(jié)點(diǎn)信息的一致性,設(shè)計(jì)通信協(xié)議消息。具體消息類型與流程如下:
(1)推送消息
將本節(jié)點(diǎn)數(shù)據(jù)摘要信息廣播到對端,數(shù)據(jù)格式為(key,version)。
(2)接收信息
接收端收到推送消息中的摘要信息,對比本地信息與收到的摘要信息,將本地版本更新的數(shù)據(jù)以格式(key,value,version)推送到推送消息發(fā)送節(jié)點(diǎn)。
(3)反饋消息
節(jié)點(diǎn)收到返回的接收消息后,更新本地?cái)?shù)據(jù),并將比對端新的數(shù)據(jù)消息反饋到對端,對端依據(jù)反饋消息更新本地?cái)?shù)據(jù)。
上一篇:
彈性通信網(wǎng)絡(luò)認(rèn)知面的工作原理
下一篇:
分布式強(qiáng)一致性算法