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

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

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

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

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

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

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

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

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

三、心跳機(jī)制

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

1.接收心跳

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

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

2.處理心跳

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

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

處理邏輯可以參考源碼:org.apache.rocketmq.namesrv.processor.DefaultRequestProcessor#processRequest#brokerHeartbeat:HGd28資訊網(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異常,會(huì)從路由表將該 Broker摘除并關(guān)閉 Socket連接,同時(shí)還會(huì)更新路由表的其他信息,整體交互如下圖:HGd28資訊網(wǎng)——每日最新資訊28at.com

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

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

四、其他核心源碼解讀

NameServer啟動(dòng)

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

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

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

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

五、總結(jié)

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

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

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

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

下一篇: 建議直接收藏的三個(gè) Go 庫(kù)

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 影音體驗(yàn)是真的強(qiáng) 簡(jiǎn)單聊聊iQOO Pad

    大公司的好處就是產(chǎn)品線豐富,非常細(xì)分化的東西也能給你做出來(lái),例如早先我們看到了新的vivo Pad2,之后我們又在iQOO Neo8 Pro的發(fā)布會(huì)上看到了iQOO的首款平板產(chǎn)品iQOO Pad。雖
  • 石頭自清潔掃拖機(jī)器人G10S評(píng)測(cè):多年黑科技集大成之作 懶人終極福音

    科技圈經(jīng)常能看到一個(gè)詞叫“縫合怪”,用來(lái)形容那些把好多功能或者外觀結(jié)合在一起的產(chǎn)品,通常這樣的詞是貶義詞,但如果真的是產(chǎn)品縫合的好、縫合的實(shí)用的話,那它就成了中性詞,今
  • Flowable工作流引擎的科普與實(shí)踐

    一.引言當(dāng)我們?cè)谌粘9ぷ骱蜆I(yè)務(wù)中需要進(jìn)行各種審批流程時(shí),可能會(huì)面臨一系列技術(shù)和業(yè)務(wù)上的挑戰(zhàn)。手動(dòng)處理這些審批流程可能會(huì)導(dǎo)致開發(fā)成本的增加以及業(yè)務(wù)復(fù)雜度的上升。在這
  • JavaScript學(xué)習(xí) -AES加密算法

    引言在當(dāng)今數(shù)字化時(shí)代,前端應(yīng)用程序扮演著重要角色,用戶的敏感數(shù)據(jù)經(jīng)常在前端進(jìn)行加密和解密操作。然而,這樣的操作在網(wǎng)絡(luò)傳輸和存儲(chǔ)中可能會(huì)受到惡意攻擊的威脅。為了確保數(shù)據(jù)
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 講故事上個(gè)月我寫過(guò)一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,當(dāng)時(shí)用的是 GDIView + WinDbg 把問(wèn)題搞定,前者用來(lái)定位泄露資源,后者用來(lái)定位泄露代碼,后面有朋友反
  • 網(wǎng)紅炒股不為了賺錢,那就是耍流氓!

    來(lái)源:首席商業(yè)評(píng)論6月26日高調(diào)宣布入市,網(wǎng)絡(luò)名嘴大v胡錫進(jìn)居然進(jìn)軍了股市。在一次財(cái)經(jīng)媒體峰會(huì)上,幾個(gè)財(cái)經(jīng)圈媒體大佬就“胡錫進(jìn)炒股是否知道認(rèn)真報(bào)道”展開討論。有
  • 機(jī)構(gòu)稱Q2國(guó)內(nèi)智能手機(jī)銷量同比下滑4% vivo份額重回第1

    7月29日消息,根據(jù)市場(chǎng)調(diào)查機(jī)構(gòu)Counterpoint Research公布的最新報(bào)告,2023年第2季度中國(guó)智能手機(jī)銷量同比下降4%,創(chuàng)新自2014年以來(lái)第2季度銷量新低。報(bào)
  • 三星Galaxy Z Fold5今日亮相:厚度縮減但仍略顯厚重

    據(jù)官方此前宣布,三星將于7月26日也就是今天在韓國(guó)首爾舉辦Unpacked活動(dòng),屆時(shí)將帶來(lái)帶來(lái)包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy
  • Meta盲目擴(kuò)張致超萬(wàn)人被裁,重金押注元宇宙而前景未明

    圖片來(lái)源:圖蟲創(chuàng)意日前,Meta創(chuàng)始人兼CEO 馬克·扎克伯發(fā)布公開信,宣布Meta計(jì)劃裁員超11000人,占其員工總數(shù)13%。他公開承認(rèn)了自己的預(yù)判失誤:“不僅
Top 主站蜘蛛池模板: 东莞市| 娄底市| 阿克陶县| 色达县| 二连浩特市| 怀仁县| 榆社县| 保靖县| 滁州市| 庄浪县| 黑河市| 汉阴县| 通辽市| 兴业县| 读书| 龙江县| 错那县| 岳西县| 清流县| 新乡县| 陆丰市| 温宿县| 闻喜县| 阿拉善右旗| 灵武市| 张家川| 井陉县| 平陆县| 金沙县| 铜川市| 保山市| 博罗县| 陆丰市| 内丘县| 渝中区| 闸北区| 花莲县| 商水县| 连山| 肥城市| 从化市|