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

當(dāng)前位置:首頁 > 科技  > 軟件

代碼很少,卻很優(yōu)秀!RocketMQ的NameServer是如何做到的?

來源: 責(zé)編: 時(shí)間:2024-06-14 08:48:57 149觀看
導(dǎo)讀今天我們來一起深入分析 RocketMQ的注冊中心 NameServer。本文基于 RocketMQ release-5.2.0。首先,我們回顧下 RocketMQ的內(nèi)核原理鳥瞰圖:從上面的鳥瞰圖,我們可以看出:Nameserver既和 Broker交互,也和 Producer和 Consume

今天我們來一起深入分析 RocketMQ的注冊中心 NameServer。56n28資訊網(wǎng)——每日最新資訊28at.com

本文基于 RocketMQ release-5.2.0。56n28資訊網(wǎng)——每日最新資訊28at.com

首先,我們回顧下 RocketMQ的內(nèi)核原理鳥瞰圖:56n28資訊網(wǎng)——每日最新資訊28at.com

56n28資訊網(wǎng)——每日最新資訊28at.com

56n28資訊網(wǎng)——每日最新資訊28at.com

三、心跳機(jī)制

心跳機(jī)制是 NameServer維護(hù) Broker的路由信息最重要的一個抓手,主要分為接收心跳、處理心跳、心跳超時(shí) 3部分:56n28資訊網(wǎng)——每日最新資訊28at.com

1.接收心跳

Broker每 30s會向所有的 NameServer發(fā)送心跳包,告訴它們自己還存活著,從而更新自己在 NameServer的狀態(tài),整體交互如下圖:56n28資訊網(wǎng)——每日最新資訊28at.com

56n28資訊網(wǎng)——每日最新資訊28at.com

2.處理心跳

NameServer收到心跳包時(shí)會更新 brokerLiveTable緩存中 BrokerLiveInfo的 lastUpdateTimeStamp信息,整體交互如下圖:56n28資訊網(wǎng)——每日最新資訊28at.com

56n28資訊網(wǎng)——每日最新資訊28at.com

處理邏輯可以參考源碼:org.apache.rocketmq.namesrv.processor.DefaultRequestProcessor#processRequest#brokerHeartbeat:56n28資訊網(wǎng)——每日最新資訊28at.com

public RemotingCommand brokerHeartbeat(ChannelHandlerContext ctx,    RemotingCommand request) throws RemotingCommandException {    final RemotingCommand response = RemotingCommand.createResponseCommand(null);    final BrokerHeartbeatRequestHeader requestHeader =        (BrokerHeartbeatRequestHeader) request.decodeCommandCustomHeader(BrokerHeartbeatRequestHeader.class);    this.namesrvController.getRouteInfoManager().updateBrokerInfoUpdateTimestamp(requestHeader.getClusterName(), requestHeader.getBrokerAddr());    response.setCode(ResponseCode.SUCCESS);    response.setRemark(null);    return response;}

3.心跳超時(shí)

NameServer每隔 10s(每隔5s + 5s延遲)掃描 brokerLiveTable檢查 Broker的狀態(tài),如果在 120s內(nèi)未收到 Broker心跳,則認(rèn)為 Broker異常,會從路由表將該 Broker摘除并關(guān)閉 Socket連接,同時(shí)還會更新路由表的其他信息,整體交互如下圖:56n28資訊網(wǎng)——每日最新資訊28at.com

56n28資訊網(wǎng)——每日最新資訊28at.com

private void startScheduleService() {this.scanExecutorService.scheduleAtFixedRate(NamesrvController.this.routeInfoManager::scanNotActiveBroker,        5, this.namesrvConfig.getScanNotActiveBrokerInterval(), TimeUnit.MILLISECONDS);}

源碼參考:org.apache.rocketmq.namesrv.routeinfo.RouteInfoManager#unRegisterBroker(),核心流程:56n28資訊網(wǎng)——每日最新資訊28at.com

  • 遍歷brokerAddrTable
  • 遍歷broker地址
  • 根據(jù) broker地址移除 brokerAddr
  • 如果當(dāng)前 Topic只包含待移除的 Broker,則移除該 Topic

四、其他核心源碼解讀

NameServer啟動

NameServer的啟動類為:org.apache.rocketmq.namesrv.NamesrvStartup,整個流程如下圖:56n28資訊網(wǎng)——每日最新資訊28at.com

56n28資訊網(wǎng)——每日最新資訊28at.com

NameServer啟動最核心的 3個事情是:56n28資訊網(wǎng)——每日最新資訊28at.com

  • 加載配置:NameServerConfig、NettyServerConfig主要是映射配置文件,并創(chuàng)建 NamesrvController。
  • 啟動 Netty通信服務(wù):NettyRemotingServer是 NameServer和Broker,Producer,Consumer通信的底層通道 Netty服務(wù)器。
  • 啟動定時(shí)器和鉤子程序:NameServerController實(shí)例一方面處理 Netty接收到消息后,一方面內(nèi)部有多個定時(shí)器和鉤子程序,它是 NameServer的核心控制器。

五、總結(jié)

NameServer并沒有采用復(fù)雜的分布式協(xié)議來保持?jǐn)?shù)據(jù)的一致性,而是采用 CAP理論中的 AP,各個節(jié)點(diǎn)之間是Peer to Peer的對等關(guān)系,數(shù)據(jù)的一致性通過心跳機(jī)制,定時(shí)器,延時(shí)感知來完成。56n28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-93682-0.html代碼很少,卻很優(yōu)秀!RocketMQ的NameServer是如何做到的?

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

上一篇: React 實(shí)現(xiàn)給密碼輸入框加上【密碼強(qiáng)度】展示?

下一篇: 建議直接收藏的三個 Go 庫

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 5月iOS設(shè)備好評榜:iPhone 14僅排第43?

    來到新的一月,安兔兔的各個榜單又重新匯總了數(shù)據(jù),像安卓陣營的榜單都有著比較大的變動,不過iOS由于設(shè)備的更新?lián)Q代并沒有那么快,所以相對來說變化并不大,特別是iOS好評榜,老款設(shè)
  • 一文掌握 Golang 模糊測試(Fuzz Testing)

    模糊測試(Fuzz Testing)模糊測試(Fuzz Testing)是通過向目標(biāo)系統(tǒng)提供非預(yù)期的輸入并監(jiān)視異常結(jié)果來發(fā)現(xiàn)軟件漏洞的方法。可以用來發(fā)現(xiàn)應(yīng)用程序、操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議等中的漏洞或
  • 共享單車的故事講到哪了?

    來源丨海克財(cái)經(jīng)與共享充電寶相差不多,共享單車已很久沒有被國內(nèi)熱點(diǎn)新聞關(guān)照到了。除了一再漲價(jià)和用戶直呼用不起了。近日多家媒體再發(fā)報(bào)道稱,成都、天津、鄭州等地多個共享單
  • 猿輔導(dǎo)與新東方的兩種“歸途”

    作者|卓心月 出品|零態(tài)LT(ID:LingTai_LT)如何成為一家偉大企業(yè)?答案一定是對“勢”的把握,這其中最關(guān)鍵的當(dāng)屬對企業(yè)戰(zhàn)略的制定,且能夠站在未來看現(xiàn)在,即使這其中的
  • 東方甄選單飛:有些鳥注定是關(guān)不住的

    作者:彭寬鴻來源:華爾街科技眼‍‍‍‍‍‍‍‍‍‍東方甄選創(chuàng)始人俞敏洪帶隊(duì)的“7天甘肅行”直播活動已在近日順利收官。成立后一
  • 引領(lǐng)旗艦級影像能力向中端機(jī)普及 OPPO K11 系列發(fā)布 1799 元起

    7月25日,OPPO正式發(fā)布K系列新品—— OPPO K11 。此次 K11 在中端手機(jī)市場長期被忽視的影像板塊發(fā)力,突破性地搭載索尼 IMX890 旗艦大底主攝,支持 OIS
  • OPPO Reno10 Pro英雄聯(lián)盟定制禮盒公布:薩勒芬妮同款配色夢幻十足

    5月24日,OPPO推出了全新的OPPO Reno 10系列,包含OPPO Reno10、OPPO Reno10 Pro和OPPO Reno10 Pro+三款新機(jī),全系標(biāo)配了超光影長焦鏡頭,是迄今為止拍照
  • 英特爾Xe-HP項(xiàng)目終止,將專注Xe-HPC/HPG系列顯卡

    據(jù)10 月 31 日消息報(bào)道,英特爾高級副總裁兼加速計(jì)算系統(tǒng)和圖形事業(yè)部總經(jīng)理 表示,Xe-HP“ Arctic Sound” 系列服務(wù)器 GPU 已經(jīng)應(yīng)用于 oneAPI devcloud 云服
  • 世界人工智能大會國際日開幕式活動在世博展覽館開啟

    30日上午,世界人工智能大會國際日開幕式活動在世博展覽館開啟,聚集國際城市代表、重量級院士專家、國際創(chuàng)新企業(yè)代表,共同打造人工智能交流平臺。上海市副市
Top