RocketMQ架構原理及名詞概念(三)

2022-06-11 22:30:21 字數 1400 閱讀 1405

這節主要講述rocketmq的整體架構,和常用術語解釋。當我們接觸乙個新東西的時候,一定要知道他的原理,只有知道原理之後,才會產生問題。只有帶著問題去讀原始碼才會事半功倍。

nameserver:從上圖可以清楚的看到nameserver主要幹了兩件事情,服務發現和路由。如果你知道zookeeper就可以很好理解nameserver了。nameserver就是乙個輕量級的zookeeper。多個nameserver可以橫向擴充套件,且它們之間沒有任何通訊。

broker:broker是rocketmq的核心組成部分,通過輕量級的topic和佇列機制來維護訊息儲存,broker支援訊息push和pull模式。支援千億級別的訊息堆積能力,總之很強大。

producer:顧名思義生產者,producer去nameserver獲取broker列表,進行輪詢傳送訊息。每個生產者都有乙個id(編號),多個生產者例項可以共用同乙個id。同乙個id下所有例項組成乙個生產者集群。

consumer:顧名思義消費者,consumer去nameserver獲取broker列表,進行訊息消費,支援push和pull兩種模式。每個訂閱者也有乙個id(編號),多個消費者例項可以共用同乙個id。同乙個id下所有例項組成乙個消費者集群。

原始碼模組說明(rokcetmq版本4.3.1):

rocketmq-broker:服務端,接受訊息,儲存訊息,consumer拉取訊息

rocketmq-client:訊息傳送和接收,包含consumer和producer

rocketmq-common:通用的列舉、基類方法、或者資料結構,包名有admin、consumer、filter、hook、message

rocketmq-distribution:指令碼、配置模組,rocketmq編譯時,bin目錄,benchmark目錄,conf目錄都是從這個模組編譯輸出的

rocketmq-example:示例模組

rocketmq-filter:訊息過濾器

rocketmq-logging:日誌

rocketmq-openmessaging:rocketmq支援openmessaging,詳見:

rocketmq-remoting:使用netty的客戶端、服務端,使用fastjson序列化,自定義二進位制協議

rocketmq-srvutil:只有乙個serverutil類,只提供server程式依賴,盡可能減少客戶端依賴

rocketmq-store:訊息儲存,索引,consumerlog,commitlog等

rocketmq-tools:命令列工具

RocketMQ架構原理

結合部署結構圖,描述集群工作流程 1,啟動namesrv,namesrv起來後監聽埠,等待broker produer consumer連上來,相當於乙個路由控制中心。2,broker啟動,跟所有的namesrv保持長連線,定時傳送心跳包。心跳包中包含當前broker資訊 ip 埠等 以及儲存所有t...

RocketMQ架構原理

訊息模型。rocketmq主要由producer broker consumer三部分組成,其中producer負責生產訊息,consumer負責消費訊息,broker負責儲存訊息。broker在實際部署過程中對應一台伺服器,每個broker可以儲存多個topic的訊息,每個topic的訊息也可以分...

RocketMQ架構簡介

apache rocketmq是一款具有低延遲,高效能和可靠性,數十億容量和靈活可擴充套件性的分布式訊息傳遞和流 平台。它由四部分組成 name servers,brokers,producers和consumers。它們中的每乙個都可以在沒有單點故障的情況下進行水平擴充套件。name server...