溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

說MGR - 成員間的通信模塊Part2

發(fā)布時(shí)間:2020-02-28 09:06:10 來源:網(wǎng)絡(luò) 閱讀:317 作者:coveringindex 欄目:MySQL數(shù)據(jù)庫(kù)

通信模塊分為3部分。


1.本地?cái)?shù)據(jù)包接收部分負(fù)責(zé)接收本地成員向其它模塊的數(shù)據(jù)發(fā)送請(qǐng)求,接收到的數(shù)據(jù)包被放入本地?cái)?shù)據(jù)隊(duì)列等待處理。

2.成員間的通信部分負(fù)責(zé)和其它成員通信。通信工作包括:從本地?cái)?shù)據(jù)隊(duì)列讀取數(shù)據(jù)包發(fā)送給其它成員,以及接收其它成員發(fā)送過來的數(shù)據(jù)包。各個(gè)成員之間通信使用了Paxos協(xié)議。

3.全局?jǐn)?shù)據(jù)包發(fā)送部分將所有的數(shù)據(jù)包按順序返回給本地成員上的全局事務(wù)認(rèn)證模塊。


當(dāng)各個(gè)成員的通信模塊接收到上層模塊的數(shù)據(jù)發(fā)送請(qǐng)求時(shí),這些并發(fā)的數(shù)據(jù)請(qǐng)求是無序的,如3個(gè)成員分別有1個(gè)數(shù)據(jù)包,分別是T1、T2和T3產(chǎn)生的數(shù)據(jù)包。這些并發(fā)、無序的數(shù)據(jù)包會(huì)通過Paxos協(xié)議匯聚到每個(gè)成員上,并且排序。最終每個(gè)成員的通信模塊都會(huì)擁有同樣的數(shù)據(jù)包,這些數(shù)據(jù)包會(huì)按照同樣的順序發(fā)送到各自成員上的全局事務(wù)認(rèn)證模塊。


Paxos協(xié)議的核心工作就是對(duì)所有的數(shù)據(jù)包進(jìn)行匯聚和排序,為了完成這些功能,Paxos協(xié)議本身會(huì)進(jìn)行3次TCP通信。


·發(fā)送數(shù)據(jù)包給其它成員的通信模塊。

·其它成員的通信模塊回應(yīng)收到的數(shù)據(jù)包。

·當(dāng)超過半數(shù)的通信模塊(包括它自己)回應(yīng)后,發(fā)送消息告訴所有成員,這個(gè)數(shù)據(jù)包同步成功。只有當(dāng)Paxos協(xié)議的三個(gè)步驟成功完成后,通信模塊才會(huì)把這個(gè)數(shù)據(jù)包發(fā)送給全局認(rèn)證模塊。


Paxos在通信上有如下特點(diǎn)。


·數(shù)據(jù)包同步成功需要三次TCP傳輸。

·每個(gè)數(shù)據(jù)包都要發(fā)送到所有的成員上,因此需要傳輸多份,傳輸?shù)臄?shù)據(jù)量會(huì)被放大。

·假設(shè)數(shù)據(jù)包發(fā)送到所有成員的過程是并發(fā)進(jìn)行的,那么數(shù)據(jù)包同步成功需要的時(shí)間是成員間最慢的那條鏈路上完成三次TCP通信的時(shí)間。


這些特點(diǎn)決定了MGR在延時(shí)大、帶寬小的網(wǎng)絡(luò)中的效率會(huì)比較低。MGR為了提高Paxos對(duì)網(wǎng)絡(luò)的適應(yīng)性,做了以下優(yōu)化。


·使用LZ4壓縮算法對(duì)事物信息進(jìn)行壓縮,當(dāng)數(shù)據(jù)包的大小超過一個(gè)閾值時(shí)會(huì)自動(dòng)壓縮,具體信息查看變量group_replication_compression_threshold的含義。

·Paxos會(huì)將多個(gè)本地事務(wù)信息封裝到一個(gè)數(shù)據(jù)包內(nèi)進(jìn)行通信,大大減少了Paxos通信的次數(shù)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI