1、RocketMQ基礎概念
Pay:
broker叢集圖示如下:
broker、topic、queue關係:
brokerAddrTable:HashMap<String/* brokerName */, BrokerData>;表示每個brokerName下面的一主多從的broker資訊
BrokerData:裡面有cluster、brokerName、brokerAddrs屬性,cluster表示對應叢集,brokerName表示brokerName下的一主多從broker,HashMap<Long/* brokerId */, String/* broker address */> brokerAddrs 表示哪個cluster叢集下哪個brokerName下哪個brokerId對應的broker地址
topicQueueTable:HashMap<String/* topic */, List<QueueData>> topicQueueTable;表示每個topic下面的訊息佇列詳情
QueueData:每個topic是跨多個broker的,QueueData表示topic對應的位置,即一個topic在那幾個broker上,有多少讀、寫佇列,即對應的訊息佇列MessageQueue資訊,比如topic1跨兩個broker,那麼queueData裡面的brokerName屬性這個topic在哪個broker上,readQueueNums表示這個topic在這個broker上的讀佇列readMessageQueue的數量,writeQueueNums為寫佇列writeMessageQueue的數量,perm屬性表示讀/寫/讀和寫。
MessagaQueue:裡面有topic、brokerName、queueId屬性,表示哪個broker上的哪個topic的queueId為**的訊息佇列TopicRouteData:定義了topic路由的相關資訊,即一個topic到哪些brokerAddr去找等等,用於網路傳輸,TopicRouteData與屬性QueueData,BrokerData關係
ConfigManager:配置管理器的父類,各種配置的管理介面
TopicConfigManager:繼承ConfigManager,用於管理Topic的配置,裡面有topicConfigTable和當前配置的版本dataVersion
topicConfigTable:ConcurrentMap<String, TopicConfig> topicConfigTable,key是topicName,value是主題對應的配置
TopicConfig:定義topic的配置項,包括topicName、讀對列、寫佇列個數,預設都是16個
dataVersion:一般用於表識資料(配置)的版本,用來輔助判斷是否需要更新資料(配置)等
TopicConfigSerializeWrapper:包括topicConfigTable和dataVersion
RouteInfoManager:
SubscriptionData:用來形容要訂閱什麼樣的訊息資料, 並不是真正的被訂閱的資料
BrokerLiveInfo:
TopicPublishInfo