日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

聊聊 RocketMQ 名字服務

來源: 責編: 時間:2023-08-09 23:03:45 330觀看
導讀NameServer 是專為 RocketMQ 設計的輕量級名字服務,它的源碼非常精簡,八個類 ,少于1000行代碼。圖片這篇文章, 筆者會從基礎概念、Broker發送心跳包、NameServer 維護路由、Zookeeper vs NameServer 四個模塊揭秘名字服務

NameServer 是專為 RocketMQ 設計的輕量級名字服務,它的源碼非常精簡,八個類 ,少于1000行代碼。l2M28資訊網——每日最新資訊28at.com

圖片圖片l2M28資訊網——每日最新資訊28at.com

這篇文章, 筆者會從基礎概念、Broker發送心跳包、NameServer 維護路由、Zookeeper vs NameServer 四個模塊揭秘名字服務的設計精髓。l2M28資訊網——每日最新資訊28at.com

一、基礎概念

圖片圖片l2M28資訊網——每日最新資訊28at.com

1、Broker 會每隔 30 秒向所有的 NameServer 發送心跳命令 ;l2M28資訊網——每日最新資訊28at.com

使用 CountDownLatch 實現多線程同步,可以獲取發往所有的 NameServer 的心跳命令的響應結果l2M28資訊網——每日最新資訊28at.com

2、心跳命令包含兩個部分:請求頭和請求體l2M28資訊網——每日最新資訊28at.com

圖片圖片l2M28資訊網——每日最新資訊28at.com

三、NameServer 維護路由

NameServer 在接收到 Broker 發送的心跳請求之后,通過默認的處理器來處理請求,保存路由信息成功后,注冊成功狀態返回給 Broker 服務。l2M28資訊網——每日最新資訊28at.com

源碼中,我們可以看到路由信息保存在 HashMap 中 。l2M28資訊網——每日最新資訊28at.com

圖片圖片l2M28資訊網——每日最新資訊28at.com

2、讀操作:查詢主題信息,操作讀鎖l2M28資訊網——每日最新資訊28at.com

圖片圖片l2M28資訊網——每日最新資訊28at.com


我們可以將 NameServer 實現注冊中心的方式總結為:RPC 服務 + HashMap 存儲容器 + 讀寫鎖 + 定時任務 。l2M28資訊網——每日最新資訊28at.com

1、NameServer 監聽固定的端口,提供 RPC 服務l2M28資訊網——每日最新資訊28at.com

2、HashMap 作為存儲容器l2M28資訊網——每日最新資訊28at.com

3、讀寫鎖控制鎖的顆粒度l2M28資訊網——每日最新資訊28at.com

4、定時任務l2M28資訊網——每日最新資訊28at.com

  • 每個 Broker 每隔 30 秒注冊主題的路由信息到所有 NameServer
  • NameServer 定時任務每隔10 秒清除已宕機的 Broker , 判斷宕機的標準是:當前時間減去 Broker 最后一次心跳時間大于2分鐘

四、Zookeeper vs NameServer

那為什么 RocketMQ 不用 Zookeeper 做為注冊中心呢 ?l2M28資訊網——每日最新資訊28at.com

我們先溫習下 CAP 理論。l2M28資訊網——每日最新資訊28at.com

圖片圖片l2M28資訊網——每日最新資訊28at.com

CAP 理論是分布式架構中重要理論。l2M28資訊網——每日最新資訊28at.com

1、一致性( Consistency ) :所有節點在同一時間具有相同的數據 ;l2M28資訊網——每日最新資訊28at.com

2、可用性( Availability ) :保證每個請求不管成功或者失敗都有響應  (某個系統的某個節點掛了,但是并不影響系統的接受或者發出請求) ;l2M28資訊網——每日最新資訊28at.com

3、分隔容忍( Partition tolerance ) :系統中任意信息的丟失或失敗不會影響系統的繼續運作。 (在整個系統中某個部分,掛掉了,或者宕機了,并不影響整個系統的運作或者說使用) 。l2M28資訊網——每日最新資訊28at.com

Zookeeper 是一個典型的 CP 注冊中心 ,通過使 ZAB 協議來保證節點之間數據的強一致性。l2M28資訊網——每日最新資訊28at.com

筆者曾經遇到過一起神州專車服務宕機事故,zookeeper 集群不堪重負,一直在選主 。架構負責人修改了 zookeeper 的 jvm 參數,重啟集群后 , 才臨時解決了問題。l2M28資訊網——每日最新資訊28at.com

因為 MetaQ 集群和服務治理共用一組 zookeeper 集群 。l2M28資訊網——每日最新資訊28at.com

  • MetaQ 消費者負載均衡時,會頻繁的爭搶鎖 ,同時也會頻繁的提交 offset  ;
  • 專車的注冊服務也越來越多,注冊信息通過Hession 序列化存儲在 zookeeper 的節點。

為了減少 zookeeper 集群的性能壓力,架構團隊將 MetaQ 使用的 zookeeper 集群獨立出來。l2M28資訊網——每日最新資訊28at.com

這次事故讓我認識到:Zookeeper 作為 CP 注冊中心,大規模使用場景下,它就變得很脆弱,我們要非常小心的使用。l2M28資訊網——每日最新資訊28at.com

淘寶中間件博客出了一篇文章 :  阿里巴巴為什么不用 ZooKeeper 做服務發現 ?l2M28資訊網——每日最新資訊28at.com

文章有兩個觀點,筆者認為非常有借鑒意義。l2M28資訊網——每日最新資訊28at.com

1、當數據中心服務規模超過一定數量 ( 服務規模=F{服務 pub 數,服務 sub 數} ),作為注冊中心的 ZooKeeper 很快就會像下圖的驢子一樣不堪重負。l2M28資訊網——每日最新資訊28at.com

2、可以使用 ZooKeeper,但是大數據請向左,而交易則向右,分布式協調向左,服務發現向右。l2M28資訊網——每日最新資訊28at.com

相比 ZooKeeper ,NameServer 是一個典型的 AP 注冊中心,它有如下優點:l2M28資訊網——每日最新資訊28at.com

1、代碼不到 1000 行,實現簡單,易于維護 ;l2M28資訊網——每日最新資訊28at.com

2、性能極好,除了網絡消耗,基本都是本地內存操作 ;l2M28資訊網——每日最新資訊28at.com

3、服務都是無狀態,且節點之間并不交互,運維簡單;l2M28資訊網——每日最新資訊28at.com

RocketMQ 的設計者之所以選擇自研名字服務,遵循著架構設計的準則,筆者總結為:簡單、高效、適當妥協。l2M28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-5193-0.html聊聊 RocketMQ 名字服務

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 你的Java程序還在使用阻塞式I/O嗎?試試NIO多路復用提高性能!

下一篇: 圖解算法,原理逐步揭開「GitHub 熱點速覽」

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 扶余县| 新田县| 萍乡市| 永城市| 吉木萨尔县| 桐乡市| 河北省| 韩城市| 营山县| 白城市| 洛宁县| 德格县| 桦南县| 商水县| 井陉县| 唐山市| 关岭| 神池县| 巢湖市| 临颍县| 加查县| 盈江县| 南京市| 高唐县| 仙居县| 宁都县| 丹阳市| 正镶白旗| 二连浩特市| 闸北区| 定州市| 洛浦县| 项城市| 陵川县| 祁连县| 诏安县| 庆城县| 梨树县| 博罗县| 久治县| 白城市|