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

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

代碼很少,卻很優秀!RocketMQ的NameServer是如何做到的?

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

今天我們來一起深入分析 RocketMQ的注冊中心 NameServer。icY28資訊網——每日最新資訊28at.com

本文基于 RocketMQ release-5.2.0。icY28資訊網——每日最新資訊28at.com

首先,我們回顧下 RocketMQ的內核原理鳥瞰圖:icY28資訊網——每日最新資訊28at.com

icY28資訊網——每日最新資訊28at.com

icY28資訊網——每日最新資訊28at.com

三、心跳機制

心跳機制是 NameServer維護 Broker的路由信息最重要的一個抓手,主要分為接收心跳、處理心跳、心跳超時 3部分:icY28資訊網——每日最新資訊28at.com

1.接收心跳

Broker每 30s會向所有的 NameServer發送心跳包,告訴它們自己還存活著,從而更新自己在 NameServer的狀態,整體交互如下圖:icY28資訊網——每日最新資訊28at.com

icY28資訊網——每日最新資訊28at.com

2.處理心跳

NameServer收到心跳包時會更新 brokerLiveTable緩存中 BrokerLiveInfo的 lastUpdateTimeStamp信息,整體交互如下圖:icY28資訊網——每日最新資訊28at.com

icY28資訊網——每日最新資訊28at.com

處理邏輯可以參考源碼:org.apache.rocketmq.namesrv.processor.DefaultRequestProcessor#processRequest#brokerHeartbeat:icY28資訊網——每日最新資訊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.心跳超時

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

icY28資訊網——每日最新資訊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(),核心流程:icY28資訊網——每日最新資訊28at.com

  • 遍歷brokerAddrTable
  • 遍歷broker地址
  • 根據 broker地址移除 brokerAddr
  • 如果當前 Topic只包含待移除的 Broker,則移除該 Topic

四、其他核心源碼解讀

NameServer啟動

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

icY28資訊網——每日最新資訊28at.com

NameServer啟動最核心的 3個事情是:icY28資訊網——每日最新資訊28at.com

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

五、總結

NameServer并沒有采用復雜的分布式協議來保持數據的一致性,而是采用 CAP理論中的 AP,各個節點之間是Peer to Peer的對等關系,數據的一致性通過心跳機制,定時器,延時感知來完成。icY28資訊網——每日最新資訊28at.com

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

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

上一篇: React 實現給密碼輸入框加上【密碼強度】展示?

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

標簽:
  • 熱門焦點
  • CSS單標簽實現轉轉logo

    轉轉品牌升級后更新了全新的Logo,今天我們用純CSS來實現轉轉的新Logo,為了有一定的挑戰性,這里我們只使用一個標簽實現,將最大化的使用CSS能力完成Logo的繪制與動畫效果。新logo
  • SpringBoot中使用Cache提升接口性能詳解

    環境:springboot2.3.12.RELEASE + JSR107 + Ehcache + JPASpring 框架從 3.1 開始,對 Spring 應用程序提供了透明式添加緩存的支持。和事務支持一樣,抽象緩存允許一致地使用各
  • 十個簡單但很有用的Python裝飾器

    裝飾器(Decorators)是Python中一種強大而靈活的功能,用于修改或增強函數或類的行為。裝飾器本質上是一個函數,它接受另一個函數或類作為參數,并返回一個新的函數或類。它們通常用
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會涉及各種各樣的安全任務,包括但不限于:開發某些安全工具的插件,滿足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • 重估百度丨“晚熟”的百度云,能等到春天嗎?

    ©自象限原創作者|程心排版|王喻可2016年7月13日,百度云計算戰略發布會在北京舉行,宣告著百度智能云的正式啟程。彼時的會場座無虛席,甚至排隊排到了門外,在場的所有人幾乎都
  • 梁柱接棒兩年,騰訊音樂闖出新路子

    文丨田靜 出品丨牛刀財經(niudaocaijing)7月5日,企鵝FM發布官方公告稱由于業務調整,將于9月6日正式停止運營,這意味著騰訊音樂長音頻業務走向消亡。騰訊在長音頻領域還在摸索。為
  • 小米公益基金會捐贈2500萬元馳援北京、河北暴雨救災

    8月2日消息,今日小米科技創始人雷軍在其微博上發布消息稱,小米公益基金會宣布捐贈2500萬元馳援北京、河北暴雨救災。攜手抗災,京冀安康!以下為公告原文
  • 聯想YOGA 16s 2022筆記本將要推出,屏幕支持觸控功能

    聯想此前宣布,將于11月2日19:30召開聯想秋季輕薄新品發布會,推出聯想 YOGA 16s 2022 筆記本等新品。官方稱,YOGA 16s 2022 筆記本將搭載 16 英寸屏幕,并且是一
  • 微軟發布Windows 11新版 引入全新任務欄狀態

    近日,微軟發布了Windows 11新版,而Build 22563更新主要引入了幾周前曝光的平板模式任務欄等,系統更流暢了。更新中,Windows 11加入了專門針對平板優化的任務欄
Top