您好,登錄后才能下訂單哦!
通信模塊分為3部分。
1.本地數據包接收部分負責接收本地成員向其它模塊的數據發送請求,接收到的數據包被放入本地數據隊列等待處理。
2.成員間的通信部分負責和其它成員通信。通信工作包括:從本地數據隊列讀取數據包發送給其它成員,以及接收其它成員發送過來的數據包。各個成員之間通信使用了Paxos協議。
3.全局數據包發送部分將所有的數據包按順序返回給本地成員上的全局事務認證模塊。
當各個成員的通信模塊接收到上層模塊的數據發送請求時,這些并發的數據請求是無序的,如3個成員分別有1個數據包,分別是T1、T2和T3產生的數據包。這些并發、無序的數據包會通過Paxos協議匯聚到每個成員上,并且排序。最終每個成員的通信模塊都會擁有同樣的數據包,這些數據包會按照同樣的順序發送到各自成員上的全局事務認證模塊。
Paxos協議的核心工作就是對所有的數據包進行匯聚和排序,為了完成這些功能,Paxos協議本身會進行3次TCP通信。
·發送數據包給其它成員的通信模塊。
·其它成員的通信模塊回應收到的數據包。
·當超過半數的通信模塊(包括它自己)回應后,發送消息告訴所有成員,這個數據包同步成功。只有當Paxos協議的三個步驟成功完成后,通信模塊才會把這個數據包發送給全局認證模塊。
Paxos在通信上有如下特點。
·數據包同步成功需要三次TCP傳輸。
·每個數據包都要發送到所有的成員上,因此需要傳輸多份,傳輸的數據量會被放大。
·假設數據包發送到所有成員的過程是并發進行的,那么數據包同步成功需要的時間是成員間最慢的那條鏈路上完成三次TCP通信的時間。
這些特點決定了MGR在延時大、帶寬小的網絡中的效率會比較低。MGR為了提高Paxos對網絡的適應性,做了以下優化。
·使用LZ4壓縮算法對事物信息進行壓縮,當數據包的大小超過一個閾值時會自動壓縮,具體信息查看變量group_replication_compression_threshold的含義。
·Paxos會將多個本地事務信息封裝到一個數據包內進行通信,大大減少了Paxos通信的次數。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。