久久国产精品一区二区三区四区,久色婷婷小香蕉久久,国产日韩欧美在线播放不卡,另类av一区二区

聊聊 RocketMQ 主從復制
來源:勇哥java實戰分享    時間:2023-07-03 09:05:25

RocketMQ 主從復制是 RocketMQ 高可用機制之一,數據可以從主節點復制到一個或多個從節點。

這篇文章,我們聊聊 RocketMQ 的主從復制,希望大家讀完之后,能夠理解主從復制的精髓。


(資料圖片僅供參考)

圖片

一、同步與異步

在 RocketMQ 的集群模式中,Broker 分為 Master 與 Slave,一個 Master 可以對應多個 Slave,但是一個 Slave 只能對應一個 Master。

每個 Broker 與 Name Server 集群中的所有節點建立長連接,定時注冊 Topic 信息到所有 Name Server。

圖片

Master 節點負責接收客戶端的寫入請求,并將消息持久化到磁盤上。而 Slave 節點則負責從 Master 節點復制消息數據,并保持與 Master 節點的同步。

1、同步復制

圖片

每個 Master 配置一個 Slave ,有多對 Master-Slave ,HA 采用同步雙寫方式,即只有主備都寫成功,才向應用返回成功。

這種模式的優缺點如下:

優點:數據與服務都無單點故障,Master宕機情況下,消息無延遲,服務可用性與數據可用性都非常高;缺點:性能比異步復制模式略低(大約低10%左右),發送單個消息的 RT 會略高,且目前版本在主節點宕機后,備機不能自動切換為主機。2、異步復制

圖片

每個 Master 配置一個 Slave ,有多對 Master-Slave ,HA 采用異步復制方式,主備有短暫消息延遲(毫秒級),這種模式的優缺點如下:

優點:即使磁盤損壞,消息丟失的非常少,且消息實時性不會受影響,同時Master宕機后,消費者仍然可以從Slave消費,而且此過程對應用透明,不需要人工干預,性能同多 Master 模式幾乎一樣;缺點:Master 宕機,磁盤損壞情況下會丟失少量消息 。

復制流程分為兩個部分:元數據復制和消息數據復制。

主從服務器同步主題,消費者進度,延遲消費進度,消費者配置數據主從服務器同步消息數據二、元數據復制

Slave Broker 定時任務每隔 10 秒會同步元數據,包括主題,消費進度,延遲消費進度,消費者配置。

圖片

同步主題時, Slave Broker 向 Master Broker 發送 RPC 請求,返回數據后,首先加入本地緩存里,然后持久化到本地。

圖片

三、消息數據復制

下圖是 Master 和 Slave 消息數據同步的流程圖。

圖片

1、Master 啟動后監聽指定端口;

Master 啟動后創建 AcceptSocketService 服務 , 用來創建客戶端到服務端的 TCP 鏈接。

圖片

RocketMQ 抽象了鏈接對象 HAConnection , HAConnection 會啟動兩個線程,分別用于讀服務和寫服務:

讀服務:處理 Slave 發送的請求寫服務:用于向 Slave 傳輸數據

圖片

2、Slave 啟動后,嘗試連接 Master ,建立 TCP 連接;

HAClient 是客戶端 Slave 的核心類 ,負責和 Master 創建連接和數據交互。

圖片

客戶端在啟動后,首先嘗試連接 Master , 查詢當前消息存儲中最大的物理偏移量 ,并存儲在變量 currentReportedOffset 里。

3、Slave 向 Master 匯報拉取消息偏移量;

圖片

上報進度的數據格式是一個 Long 類型的 Offset , 8個字節 , 非常簡潔 。

圖片

發送到 Socket 緩沖區后 , 修改最后一次的寫時間 lastWriteTimestamp 。

4、Master 解析請求偏移量,從消息文件中檢索該偏移量后的所有消息;

當 Slave 上報數據到 Master 時,觸發 SelectionKey.OP_READ 事件,Master 將請求交由 ReadSocketService 服務處理:

圖片

當 Slave Broker 傳遞了自身 commitlog 的 maxPhyOffset 時,Master 會馬上中斷selector.select(1000),執行processReadEvent方法。

圖片

processReadEvent 方法的核心邏輯是設置 Slave 的當前進度 offset ,然后通知復制線程當前的復制進度。

寫服務 WriteSocketService 從消息文件中檢索該偏移量后的所有消息(傳輸批次數據大小限制),并將消息數據發送給 Slave。

圖片

5、Slave 接收到數據,將消息數據 append 到消息文件 commitlog 里 。

圖片

首先 HAClient 類中調用 dispatchReadRequest 方法 , 解析出消息數據 ;

圖片

然后將消息數據 append 到本地的消息存儲。

圖片

四、 同步的實現

從數據復制流程圖,我們發覺數據復制本身就是一個異步執行的,但是同步是如何實現的呢?

Master Broker 接收到寫入消息的請求后 ,調用 Commitlog 的 aysncPutMessage 方法寫入消息。

圖片

這段代碼中,當 commitLog 執行完 appendMessage 后, 需要執行刷盤任務和同步復制兩個任務。

但這兩個任務并不是同步執行,而是異步的方式,使用了 CompletableFuture 這個異步神器。

當 HAConnection 讀服務接收到 Slave 的進度反饋,發現消息數據復制成功,則喚醒 future 。

圖片

最后 Broker 組裝響應命令 ,并將響應命令返回給客戶端。

五、總結

RocketMQ 主從復制的實現思路非常簡潔,Slave 啟動一個線程,不斷從 Master 拉取 Commit Log 中的數據,然后在異步 build 出 Consume Queue 數據結構。

核心要點如下:

1、主從復制包含元數據復制和消息數據復制兩個部分;

2、元數據復制

Slave Broker 定時任務每隔 10 秒向 Master Broker 發送 RPC 請求,將元數據同步到緩存后,然后持久化到磁盤里;

3、消息數據復制

Master 啟動監聽指定端口Slave 啟動 HaClient 服務,和 Master 創建 TCP 鏈接Slave 向 Master 上報存儲進度Master 接收進度,消息文件中檢索該偏移量后的所有消息,并傳輸給 SlaveSlave 接收到數據后,將消息數據 append 到本地的消息存儲。

4、同步的實現

當 commitLog 執行完 appendMessage 后, 需要執行刷盤任務和同步復制兩個任務,這里用到了 CompletableFuture 這個異步神器。

當 HAConnection 讀服務接收到 Slave 的進度反饋,發現消息數據復制成功,則喚醒 future 。最后 Broker 組裝響應命令 ,并將響應命令 返回給客戶端 。

關鍵詞:

X 關閉

X 關閉

久久国产精品一区二区三区四区,久色婷婷小香蕉久久,国产日韩欧美在线播放不卡,另类av一区二区
最新精品在线| 久久精品99国产精品酒店日本| 欧美一区二区视频网站| 欧美日韩一区二区三区在线视频| 伊人久久噜噜噜躁狠狠躁| 亚洲欧美bt| 亚洲视频视频在线| 亚洲高清色综合| 欧美激情视频一区二区三区免费| 亚洲福利av| 国产欧美日韩综合| 国产精品高清一区二区三区| 午夜精品国产精品大乳美女| 欧美片在线播放| 欧美婷婷久久| 一区二区三区自拍| 亚洲综合视频一区| 能在线观看的日韩av| 国产精品有限公司| 一区二区三区三区在线| 久久午夜视频| 亚洲性视频网址| 亚洲日本中文| 另类天堂视频在线观看| 国产九九精品| 麻豆精品在线视频| 欧美大香线蕉线伊人久久国产精品| 亚洲欧美日韩精品| 欧美日韩中文在线观看| 麻豆91精品91久久久的内涵| 国产精品亚洲视频| 亚洲综合色丁香婷婷六月图片| 欧美高清视频在线播放| 乱人伦精品视频在线观看| 欧美三级中文字幕在线观看| 亚洲欧美日韩一区二区三区在线观看| 国产精品久久二区二区| 欧美日韩综合精品| 亚洲欧美综合精品久久成人| 国内一区二区三区在线视频| 欧美精品入口| 国产精品男女猛烈高潮激情| 国产精品国产三级国产普通话99| 久久资源在线| 亚洲男女自偷自拍图片另类| 亚洲在线观看免费| 亚欧美中日韩视频| 欧美黑人在线观看| 欧美日韩一区二区在线播放| 亚洲一区二区三区欧美| 国产一区二区三区四区hd| 欧美在线播放一区二区| 国产在线不卡| 亚洲欧洲精品天堂一级| 国产亚洲视频在线观看| 欧美一级二区| 亚洲精品视频在线观看网站| 国产精品美女久久| 亚洲国产欧美一区二区三区同亚洲| 一个色综合导航| 亚洲成人在线免费| 欧美色图五月天| 国产精品一页| 欧美色欧美亚洲另类七区| 一区二区视频免费完整版观看| 欧美成人亚洲| 久久成年人视频| 国产乱码精品一区二区三| 欧美一区二区高清| 在线亚洲国产精品网站| 免费人成网站在线观看欧美高清| 亚洲精品中文字幕有码专区| 欧美在线网站| 久久综合久久综合久久| 亚洲第一黄色网| 久久精品国产在热久久| 香蕉视频成人在线观看| 蜜臀91精品一区二区三区| 亚洲精选久久| 在线免费观看日韩欧美| 亚洲一区二区黄| 日韩天堂av| 亚洲色诱最新| 欧美视频官网| 欧美三级网址| 欧美国产综合| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲精品午夜精品| 国产无遮挡一区二区三区毛片日本| 久久日韩粉嫩一区二区三区| 久久国产精品黑丝| 亚洲人成人77777线观看| 99精品视频免费观看| 欧美激情精品久久久久久黑人| 黄色一区二区在线| 亚洲一二三区视频在线观看| 亚洲天堂av在线免费| 久久精品主播| 欧美国产日产韩国视频| 国产精品国产| 亚洲精品欧美在线| 国产精品视频最多的网站| 欧美小视频在线观看| 亚洲综合色丁香婷婷六月图片| 亚洲第一福利视频| 亚洲免费视频一区二区| 国产精品久久福利| 亚洲日本成人女熟在线观看| 亚洲最新视频在线播放| 日韩视频免费观看高清在线视频| 国产亚洲一区二区在线观看| 欧美成人午夜| 精品动漫一区二区| 欧美在线免费看| 在线综合视频| 欧美精品电影在线| 亚洲电影在线播放| 久久只有精品| 欧美性猛交一区二区三区精品| 欧美成年人网| 亚洲人体一区| 亚洲小少妇裸体bbw| 久久大综合网| 亚洲国产天堂久久国产91| 最新日韩中文字幕| 日韩亚洲欧美高清| 伊人久久大香线蕉综合热线| 国产精品夫妻自拍| 欧美黄在线观看| 亚洲视频精选| 国产视频欧美视频| 91久久久国产精品| 国产精品大片| 国产精品久久久久毛片大屁完整版| 欧美大片网址| 亚洲性线免费观看视频成熟| 欧美成人免费在线视频| 久久久一区二区| 欧美精品成人91久久久久久久| 亚洲丰满在线| 亚洲欧美www| 欧美片在线观看| 经典三级久久| 久久精品亚洲一区二区三区浴池| 国产亚洲美州欧州综合国| 亚洲在线不卡| 免费看黄裸体一级大秀欧美| 一本色道久久88精品综合| 久久精品国产亚洲精品| 午夜久久久久久| 欧美视频在线不卡| 欧美激情偷拍| 在线免费观看日本欧美| 亚洲一区二区三区在线看| 欧美激情免费在线| 亚洲第一色中文字幕| 小处雏高清一区二区三区| 欧美国产日本在线| 免费精品99久久国产综合精品| 欧美电影免费观看高清完整版| 久久手机精品视频| 亚洲欧美日本日韩| 免费短视频成人日韩| 日韩视频第一页| 午夜免费日韩视频| 国产精品社区| 亚洲人成网站777色婷婷| 狂野欧美激情性xxxx| 亚洲欧美999| 亚洲欧美日韩国产一区| 午夜精品免费视频| 欧美激情亚洲另类| 亚洲国产另类 国产精品国产免费| 欧美激情视频一区二区三区免费| 一区二区三区精品| 亚洲视频免费观看| 欧美性大战久久久久| 小黄鸭视频精品导航| 久久久美女艺术照精彩视频福利播放| 国产欧美一区二区三区另类精品| 国内精品一区二区| 国产亚洲美州欧州综合国| 在线亚洲美日韩| 一区二区激情视频| 欧美日韩综合视频网址| 欧美在线观看视频一区二区三区| 欧美成人免费一级人片100| 欧美日韩蜜桃| 樱桃成人精品视频在线播放| 欧美成人亚洲| 欧美激情精品久久久久久大尺度| 久久精品中文字幕一区二区三区| 欧美视频在线观看一区| 国产精品欧美精品| 一本久久综合亚洲鲁鲁五月天| 国产伦精品一区二区三区视频孕妇| 国产精品丝袜91| 国产精品福利在线观看网址| 欧美日韩精品一区视频| 欧美一级免费视频|