架構圖

模塊職責劃分
- rocketmq-common:通用的列舉、基類方法、或者資料結構,包名有admin、consumer、filter、hook、message
- rocketmq-remoting:使用netty的客戶端、服務端,使用fastjson序列化,自定義二進制協議
- rocketmq-srvutil:只有一個ServerUtil類,只提供Server程式依賴,盡可能減少客戶端依賴
- rocketmq-store:訊息存盤,索引,consumerLog,commitLog等
- rocketmq-client:訊息發送和接收,包含consumer和producer
- rocketmq-filtersrv:訊息過濾器
- rocketmq-broker:服務端,接受訊息,存盤訊息,consumer拉取訊息
- rocketmq-tools:命令列工具
- rocketmq-namesrv:NameServer,類似服務注冊中心,broker在這里注冊,consumer和producer在這里找到broker地址
運行源代碼
it地址: https://github.com/apache/rocketmq.git

運行配置
啟動NameServer啟動配置,配置下RocketHome
環境變數:ROCKETMQ_HOME=C:\codes\rocketmq-release-4.0.0-incubating

啟動Broke配置
broker的啟動類為org.apache.rocketmq.broker.BrokerStartup,添加程式運行引數-n 127.0.0.1:9876 autoCreateTopicEnable=true即可運行broker服務,broker服務根據配置的9876埠會將自身資訊注冊到namesrv中,

RocketMq架構,特性,實體代碼
https://github.com/apache/rocketmq/tree/master/docs/cn
RocketMq實作原理疑問
一個mq的重要概念一般有那些?
producer,consumer,broker,partition,register center,rpc鏈接,序列化,資料持久化,rebalace
nameserver的作用是啥?
記錄了Broke,topic,Queue的關系,
Topic和Queue,Broke 是什么樣的關系,然后訊息是如何發送和消費的?
1:一般來說訂閱發布機制 只需要一個Queue就可以實作了,秉承著FIFO的原則,但是假如一個只有Queue,消費端的并發量就上不去,所以設計上就需要把訊息分散到多個Queue上面去,然后consumer
消費對應的Queue,這樣消費并發就上去了,然后把這一組Queue 就當做一個topic.
2:Broker就是存放Queue的服務,可以是多個topic的 Queue. 它們之間的關系是 一個topic對應多個Queue,然后Queue平均散落在broke上, 一個Broke至少有一個Queue.
在producer端發送訊息的時候是需要指定 Topic, 然后按照某種策略發送到Queue, 一般一個Topic有默認4個Queue,然后就散落在broke上(假如有多個broke),
3:消費的時候,consumer直接訂閱的是queue,假如有4個queue,2個consumer它們會平分,然后去Queue所在的broke去消費,
是如何做持久化的?
Commitlog
rebalace是如何實作的?
通過nameserver,盡量做到平均,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/272867.html
標籤:其他
