通信模塊分為3部分。
創(chuàng)新互聯(lián)建站秉承實現(xiàn)全網(wǎng)價值營銷的理念,以專業(yè)定制企業(yè)官網(wǎng),成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè),小程序設(shè)計,網(wǎng)頁設(shè)計制作,成都做手機(jī)網(wǎng)站,成都全網(wǎng)營銷推廣幫助傳統(tǒng)企業(yè)實現(xiàn)“互聯(lián)網(wǎng)+”轉(zhuǎn)型升級專業(yè)定制企業(yè)官網(wǎng),公司注重人才、技術(shù)和管理,匯聚了一批優(yōu)秀的互聯(lián)網(wǎng)技術(shù)人才,對客戶都以感恩的心態(tài)奉獻(xiàn)自己的專業(yè)和所長。
1.本地數(shù)據(jù)包接收部分負(fù)責(zé)接收本地成員向其它模塊的數(shù)據(jù)發(fā)送請求,接收到的數(shù)據(jù)包被放入本地數(shù)據(jù)隊列等待處理。
2.成員間的通信部分負(fù)責(zé)和其它成員通信。通信工作包括:從本地數(shù)據(jù)隊列讀取數(shù)據(jù)包發(fā)送給其它成員,以及接收其它成員發(fā)送過來的數(shù)據(jù)包。各個成員之間通信使用了Paxos協(xié)議。
3.全局?jǐn)?shù)據(jù)包發(fā)送部分將所有的數(shù)據(jù)包按順序返回給本地成員上的全局事務(wù)認(rèn)證模塊。
當(dāng)各個成員的通信模塊接收到上層模塊的數(shù)據(jù)發(fā)送請求時,這些并發(fā)的數(shù)據(jù)請求是無序的,如3個成員分別有1個數(shù)據(jù)包,分別是T1、T2和T3產(chǎn)生的數(shù)據(jù)包。這些并發(fā)、無序的數(shù)據(jù)包會通過Paxos協(xié)議匯聚到每個成員上,并且排序。最終每個成員的通信模塊都會擁有同樣的數(shù)據(jù)包,這些數(shù)據(jù)包會按照同樣的順序發(fā)送到各自成員上的全局事務(wù)認(rèn)證模塊。
Paxos協(xié)議的核心工作就是對所有的數(shù)據(jù)包進(jìn)行匯聚和排序,為了完成這些功能,Paxos協(xié)議本身會進(jìn)行3次TCP通信。
·發(fā)送數(shù)據(jù)包給其它成員的通信模塊。
·其它成員的通信模塊回應(yīng)收到的數(shù)據(jù)包。
·當(dāng)超過半數(shù)的通信模塊(包括它自己)回應(yīng)后,發(fā)送消息告訴所有成員,這個數(shù)據(jù)包同步成功。只有當(dāng)Paxos協(xié)議的三個步驟成功完成后,通信模塊才會把這個數(shù)據(jù)包發(fā)送給全局認(rèn)證模塊。
Paxos在通信上有如下特點。
·數(shù)據(jù)包同步成功需要三次TCP傳輸。
·每個數(shù)據(jù)包都要發(fā)送到所有的成員上,因此需要傳輸多份,傳輸?shù)臄?shù)據(jù)量會被放大。
·假設(shè)數(shù)據(jù)包發(fā)送到所有成員的過程是并發(fā)進(jìn)行的,那么數(shù)據(jù)包同步成功需要的時間是成員間最慢的那條鏈路上完成三次TCP通信的時間。
這些特點決定了MGR在延時大、帶寬小的網(wǎng)絡(luò)中的效率會比較低。MGR為了提高Paxos對網(wǎng)絡(luò)的適應(yīng)性,做了以下優(yōu)化。
·使用LZ4壓縮算法對事物信息進(jìn)行壓縮,當(dāng)數(shù)據(jù)包的大小超過一個閾值時會自動壓縮,具體信息查看變量group_replication_compression_threshold的含義。
·Paxos會將多個本地事務(wù)信息封裝到一個數(shù)據(jù)包內(nèi)進(jìn)行通信,大大減少了Paxos通信的次數(shù)。