AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

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

聊聊 RocketMQ 名字服務(wù)

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

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

圖片圖片hih28資訊網(wǎng)——每日最新資訊28at.com

這篇文章, 筆者會從基礎(chǔ)概念、Broker發(fā)送心跳包、NameServer 維護路由、Zookeeper vs NameServer 四個模塊揭秘名字服務(wù)的設(shè)計精髓。hih28資訊網(wǎng)——每日最新資訊28at.com

一、基礎(chǔ)概念

圖片圖片hih28資訊網(wǎng)——每日最新資訊28at.com

NameServer 是一個非常簡單的 Topic 路由注冊中心,其角色類似 Dubbo 中的 zookeeper ,支持 Broker 的動態(tài)注冊與發(fā)現(xiàn)。hih28資訊網(wǎng)——每日最新資訊28at.com

RocketMQ 集群工作流程:hih28資訊網(wǎng)——每日最新資訊28at.com

1、NameServer 啟動服務(wù),監(jiān)聽 TCP 端口 , 集群多節(jié)點之間無任何信息交互,然后等待 Broker、Producer 、Consumer 連上來;hih28資訊網(wǎng)——每日最新資訊28at.com

2、Broker 啟動后,每隔 30 秒向所有的 NameServer 發(fā)送心跳命令 ;hih28資訊網(wǎng)——每日最新資訊28at.com

3、NameServer 接收到請求之后,保存路由信息在本地內(nèi)存里 ,將響應(yīng)結(jié)果返給 Broker 服務(wù);hih28資訊網(wǎng)——每日最新資訊28at.com

4、Producer 啟動之后,會隨機的選擇一個 NameServer ,并從 NameServer 中獲取當前發(fā)送的 Topic 存在哪些 Broker 上,輪詢從隊列列表中選擇一個隊列,然后與隊列所在的 Broker 建立長連接從而向 Broker 發(fā)消息;hih28資訊網(wǎng)——每日最新資訊28at.com

5、Consumer 跟 Producer 類似,跟其中一臺 NameServer 建立長連接,獲取當前訂閱 Topic 存在哪些 Broker 上,然后直接跟 Broker 建立連接通道,開始消費消息。hih28資訊網(wǎng)——每日最新資訊28at.com

二、Broker發(fā)送心跳包

我們貼一段 Broker 發(fā)送心跳命令的源碼:hih28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片hih28資訊網(wǎng)——每日最新資訊28at.com

1、Broker 會每隔 30 秒向所有的 NameServer 發(fā)送心跳命令 ;hih28資訊網(wǎng)——每日最新資訊28at.com

使用 CountDownLatch 實現(xiàn)多線程同步,可以獲取發(fā)往所有的 NameServer 的心跳命令的響應(yīng)結(jié)果hih28資訊網(wǎng)——每日最新資訊28at.com

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

圖片圖片hih28資訊網(wǎng)——每日最新資訊28at.com

三、NameServer 維護路由

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

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

圖片圖片hih28資訊網(wǎng)——每日最新資訊28at.com

1、topicQueueTable:Topic 消息隊列路由信息,包括 topic 所在的 broker 名稱,讀隊列數(shù)量,寫隊列數(shù)量,同步標記等信息,rocketmq 根據(jù) topicQueueTable 的信息進行負載均衡消息發(fā)送。hih28資訊網(wǎng)——每日最新資訊28at.com

2、brokerAddrTable:Broker 節(jié)點信息,包括 brokername,所在集群名稱,還有主備節(jié)點信息。hih28資訊網(wǎng)——每日最新資訊28at.com

3、clusterAddrTable:Broker 集群信息,存儲了集群中所有的 Brokername。hih28資訊網(wǎng)——每日最新資訊28at.com

4、brokerLiveTable:Broker 狀態(tài)信息,NameServer 每次收到 Broker 的心跳包就會更新該信息。hih28資訊網(wǎng)——每日最新資訊28at.com

當 Broker 向 NameServer 發(fā)送心跳包(路由信息),NameServer 需要對 HashMap 進行數(shù)據(jù)更新,但我們都知道 HashMap 并不是線程安全的,高并發(fā)場景下,容易出現(xiàn) CPU 100% 問題,所以更新 HashMap 時需要加鎖,RocketMQ 使用了 JDK 的讀寫鎖 ReentrantReadWriteLock 。hih28資訊網(wǎng)——每日最新資訊28at.com

下面我們看下路由信息如何更新和讀取:hih28資訊網(wǎng)——每日最新資訊28at.com

1、寫操作:更新路由信息,操作寫鎖hih28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片hih28資訊網(wǎng)——每日最新資訊28at.com

2、讀操作:查詢主題信息,操作讀鎖hih28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片hih28資訊網(wǎng)——每日最新資訊28at.com


我們可以將 NameServer 實現(xiàn)注冊中心的方式總結(jié)為:RPC 服務(wù) + HashMap 存儲容器 + 讀寫鎖 + 定時任務(wù) 。hih28資訊網(wǎng)——每日最新資訊28at.com

1、NameServer 監(jiān)聽固定的端口,提供 RPC 服務(wù)hih28資訊網(wǎng)——每日最新資訊28at.com

2、HashMap 作為存儲容器hih28資訊網(wǎng)——每日最新資訊28at.com

3、讀寫鎖控制鎖的顆粒度hih28資訊網(wǎng)——每日最新資訊28at.com

4、定時任務(wù)hih28資訊網(wǎng)——每日最新資訊28at.com

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

四、Zookeeper vs NameServer

那為什么 RocketMQ 不用 Zookeeper 做為注冊中心呢 ?hih28資訊網(wǎng)——每日最新資訊28at.com

我們先溫習下 CAP 理論。hih28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片hih28資訊網(wǎng)——每日最新資訊28at.com

CAP 理論是分布式架構(gòu)中重要理論。hih28資訊網(wǎng)——每日最新資訊28at.com

1、一致性( Consistency ) :所有節(jié)點在同一時間具有相同的數(shù)據(jù) ;hih28資訊網(wǎng)——每日最新資訊28at.com

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

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

Zookeeper 是一個典型的 CP 注冊中心 ,通過使 ZAB 協(xié)議來保證節(jié)點之間數(shù)據(jù)的強一致性。hih28資訊網(wǎng)——每日最新資訊28at.com

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

因為 MetaQ 集群和服務(wù)治理共用一組 zookeeper 集群 。hih28資訊網(wǎng)——每日最新資訊28at.com

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

為了減少 zookeeper 集群的性能壓力,架構(gòu)團隊將 MetaQ 使用的 zookeeper 集群獨立出來。hih28資訊網(wǎng)——每日最新資訊28at.com

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

淘寶中間件博客出了一篇文章 :  阿里巴巴為什么不用 ZooKeeper 做服務(wù)發(fā)現(xiàn) ?hih28資訊網(wǎng)——每日最新資訊28at.com

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

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

2、可以使用 ZooKeeper,但是大數(shù)據(jù)請向左,而交易則向右,分布式協(xié)調(diào)向左,服務(wù)發(fā)現(xiàn)向右。hih28資訊網(wǎng)——每日最新資訊28at.com

相比 ZooKeeper ,NameServer 是一個典型的 AP 注冊中心,它有如下優(yōu)點:hih28資訊網(wǎng)——每日最新資訊28at.com

1、代碼不到 1000 行,實現(xiàn)簡單,易于維護 ;hih28資訊網(wǎng)——每日最新資訊28at.com

2、性能極好,除了網(wǎng)絡(luò)消耗,基本都是本地內(nèi)存操作 ;hih28資訊網(wǎng)——每日最新資訊28at.com

3、服務(wù)都是無狀態(tài),且節(jié)點之間并不交互,運維簡單;hih28資訊網(wǎng)——每日最新資訊28at.com

RocketMQ 的設(shè)計者之所以選擇自研名字服務(wù),遵循著架構(gòu)設(shè)計的準則,筆者總結(jié)為:簡單、高效、適當妥協(xié)。hih28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-5193-0.html聊聊 RocketMQ 名字服務(wù)

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

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

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

標簽:
  • 熱門焦點
  • 俄羅斯:將審查iPhone等外國公司設(shè)備 保數(shù)據(jù)安全

    iPhone和特斯拉都屬于在各自領(lǐng)域領(lǐng)頭羊的品牌,推出的產(chǎn)品也也都是數(shù)一數(shù)二的,但對于一些國家而言,它們的產(chǎn)品可靠性和安全性還是在限制范圍內(nèi)。近日,俄羅斯聯(lián)邦通信、信息技術(shù)
  • 微信語音大揭秘:為什么禁止轉(zhuǎn)發(fā)?

    大家好,我是你們的小米。今天,我要和大家聊一個有趣的話題:為什么微信語音不可以轉(zhuǎn)發(fā)?這是一個我們經(jīng)常在日常使用中遇到的問題,也是一個讓很多人好奇的問題。讓我們一起來揭開這
  • 三分鐘白話RocketMQ系列—— 如何發(fā)送消息

    我們知道RocketMQ主要分為消息 生產(chǎn)、存儲(消息堆積)、消費 三大塊領(lǐng)域。那接下來,我們白話一下,RocketMQ是如何發(fā)送消息的,揭秘消息生產(chǎn)全過程。注意,如果白話中不小心提到相關(guān)代
  • 零售大模型“干中學”,攀爬數(shù)字化珠峰

    文/侯煜編輯/cc來源/華爾街科技眼對于絕大多數(shù)登山愛好者而言,攀爬珠穆朗瑪峰可謂終極目標。攀登珠峰的商業(yè)路線有兩條,一是尼泊爾境內(nèi)的南坡路線,一是中國境內(nèi)的北坡路線。相
  • 阿里大調(diào)整

    來源:產(chǎn)品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的“征求意見版”:1、取消P序列
  • 認真聊聊東方甄選:如何告別低垂的果實

    來源:山核桃作者:財經(jīng)無忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關(guān)心的“網(wǎng)紅”。7月5日至9日,為期5天的東方甄選“甘肅行”首次在自有App內(nèi)直播,
  • 超閉合精工鉸鏈 徹底消滅縫隙 三星Galaxy Z Flip5與Galaxy Z Fold5發(fā)布

    2023年7月26日,三星電子正式發(fā)布了Galaxy Z Flip5與Galaxy Z Fold5。三星新一代折疊屏手機采用超閉合精工鉸鏈,讓折疊后的縫隙不再可見。同時,配合處
  • OPPO K11搭載長壽版100W超級閃充:26分鐘充滿100%

    據(jù)此前官方宣布,OPPO將于7月25日也就是今天下午14:30舉辦新品發(fā)布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣
  • 機構(gòu)稱Q2全球智能手機出貨量同比下滑11% 蘋果份額依舊第2

    7月20日消息,據(jù)外媒報道,研究機構(gòu)的報告顯示,由于需求下滑,今年二季度全球智能手機的出貨量,同比下滑了11%,三星、蘋果等主要廠商的銷量,較去年同期均有下
Top