91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

RocketMQ架構是怎么樣的

發布時間:2021-12-17 14:17:09 來源:億速云 閱讀:216 作者:小新 欄目:大數據

這篇文章主要介紹RocketMQ架構是怎么樣的,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

一、總體架構

RocketMQ是開源的一個分布式消息中間件。在RocketMQ中包含四個主要角色:nameserver,元數據管理服務;broker,接收、存儲、分發消息;producer,消息生產者;consumer,消息消費者。整體架構如下圖

RocketMQ架構是怎么樣的

Nameserver是一個無狀態的服務,各個nameserver之間無數據交互。每個borker都會向所有nameserver保持心跳消息,將broker上的topic存儲信息上報到nameserver。producer/consumer會隨機選擇一個nameserver建立長鏈接,從nameserver定時拉取訂閱的topic的路由信息。

Broker是消息存儲服務器,一個broker可以包含一個master以及多個slave,master和slave之間形成主備關系。master之間無任何通訊,也就是說rocketmq不會在master之間自動重新分配topic的存儲。一個topic可以存儲在多個broker上,每個broker上又可以分成多個queue,以降低讀寫的壓力。topic的存儲如下圖所示,其中topic和broker之間的對應關系是需要管理員人為指定的。producer和consumer會和訂閱的topic所在的broker建立長鏈接,用于拉取和消費消息。

RocketMQ架構是怎么樣的

Producer是消息生產者,多個發送同種消息的producer可以歸到同一個producer group。

Consumer是消息消費者,rocketmq存在兩種消息消費方式:廣播,同一個消息會發送給所有消費者;集群,同一個消息只會發送給一個消費者。同一個類型的消費者可以組成一個consumer group.

二、消息模型

Message代表一個消息,一個message有兩個標識的id:msgid & offsetMsgId:

  • msgId是producer生成的,全局唯一,也叫做uniqId。存儲在Message.properties里,存儲的key是“UNIQ_KEY”。

  • offsetMsgId,是由存儲的broker的服務器地址以及commitlog的offet兩者拼接而成的。存儲在MessageExt.msgId中。

除了msgid & offsetMsgId之外,消息還可以指定一組keys。broker會把message的keys解析,存儲到一個索引服務(IndexService)當中,支持按key來搜索消息。

RocketMQ的message還支持tag,可以在發送消息時指定tag,并按tag進行訂閱。broker會把消息的tag計算成一個hashcode,存儲到ConsumeQueue當中,這樣在訂閱時就可以快速過濾出包含特定tag的消息。

為了支持消息的快速寫入、讀取、按key搜索、按tag訂閱,rocketmq的消息存儲采用如下架構:

  • commitlog用來存儲消息原文,不分topic,按順序append到末尾。對于每個消息有一個對應的offset,代表在commitlog中的偏移量。

  • ConsumeQueue按topic存儲,每個element是固定的20字節的長度,包含一個消息的offset + size + taghashcode。

  • IndexFile存儲消息的key索引,同一個broker上的所有topic共享同一個index服務。indexservice當中會以“topic#key”的形式來存儲消息基于key的反向索引。

以上是“RocketMQ架構是怎么樣的”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

满城县| 黄骅市| 营山县| 聂荣县| 徐州市| 丹巴县| 东明县| 铜梁县| 乐陵市| 泰州市| 霍城县| 同德县| 庄河市| 大竹县| 彭泽县| 长岛县| 筠连县| 万全县| 甘洛县| 余干县| 北安市| 绍兴市| 北京市| 梧州市| 应用必备| 壤塘县| 赞皇县| 潍坊市| 洛阳市| 崇左市| 平果县| 长阳| 北流市| 绥芬河市| 勃利县| 连州市| 思茅市| 克东县| 安乡县| 开江县| 淄博市|