說MGR 成員間的通訊模組Part2

2021-09-27 05:47:26 字數 979 閱讀 4088

通訊模組分為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通訊的次數。

RestTemplate 模組間的通訊

1.第一種方式 直接使用resttemplate 和url的純路徑獲取不同模組的服務 缺點,太死板。不能靈活在各個模組間切換 2.第二種方式 通過loadbalancerclient獲取應用名,然後根據應用名獲取url,最後根據resttemplate通過url和返回值獲得資訊 resttempla...

模組間通訊 訊息機制

作者昨天遇到乙個問題,就是其中乙個對話方塊裡的樹節點雙擊時,需要通知另乙個對話方塊中去通過sdk獲取資料庫中的資訊 不同的對話方塊獲取不同的資料資訊 並且該對話方塊中有乙個map表存有多個對話方塊的基類指標。這時怎麼通過基類的指標實現呼叫另乙個或多個對話方塊的不同實現呢?這時我們可以借助訊息機制來解...

linux核心模組間通訊辦法

這裡僅僅涉及到共享全域性變數。核心中本身就存在全域性變數,比如jiffies。類似的在核心的模組中include linux h新建這個標頭檔案。將你向共享的變數的宣告放在這個地方。採用函式來操作全域性變數也可以,直接匯出全域性變數也可以。巨集 export symbol 這種方式引用的時候需要在引...