一、概述
RocketMQ是一款高性能、高吞吐量的分布式消息隊列系統,它采用了分布式架構,支持多生產者和消費者并發讀寫,具有高可用性、高吞吐量、低延遲等特點。本文將對RocketMQ的系統架構進行詳細解析。
二、架構設計
RocketMQ采用了分布式架構,主要包括以下部分:
- NameServer集群:NameServer集群負責存儲和管理生產者和消費者的元數據信息,以及提供負載均衡和故障轉移功能。
- Broker集群:Broker集群負責存儲和轉發消息,以及提供負載均衡和故障轉移功能。每個Broker都有一個獨立的NameServer實例,用于與NameServer通信。
- 生產者集群:生產者集群負責向Broker投遞消息,以及提供負載均衡和故障轉移功能。生產者通過連接到NameServer獲取隊列的元數據信息,然后將消息發送到指定的隊列中。
- 消費者集群:消費者集群負責從Broker中拉取消息并進行處理,以及提供負載均衡和故障轉移功能。消費者通過連接到NameServer獲取隊列的元數據信息,然后從指定的隊列中拉取消息。
?
三、相關概念
消息(Message)
傳輸最小單元
主題(Topic)
有點類似RabbitMQ的交換機。一類消息的集合,RocketMQ消息訂閱基本單位。每個主題包含若干消息,每條消息只能屬于一個主題。
標簽(Tag)
有點類似RabbitMQ的路由鍵,為主題設置不同的標簽,同一個工程不同業務,不同標簽
eg:
Topic:product-servicetag:price、stock消費者可以監聽主題product-service,不同tag消息
隊列(Queue)
存放消息。一個主題多個隊列(分區)
注意:一個Topic的隊列中消息只能被一個消費組的的的一個消費者消費。不允許同個消費者組的多個消費者消費
消息標識(MessageId/Key)
RocketMQ中每個消息擁有唯一的MessageId,且可以攜帶具有業務標識的Key,以方便對消息的查詢
Name Server(類似注冊中心)
NameServer是一個Broker與Topic路由的注冊中心,支持Broker的動態注冊與發現。
主要兩個功能:
Broker管理:維護broke信息,位置心跳,檢查B榮可人是否存活
路由信息管理:Producer和Conumser通過NameServer獲取整個Broker集群的路由信息,從而進行消息的投遞和消費
?
四、總結
RocketMQ采用分布式架構,包括NameServer、Broker、Producer和Consumer等核心組件。NameServer負責存儲和管理生產者和消費者的元數據信息,Broker負責消息的存儲、轉發、持久化等功能,Producer負責向Broker投遞消息,Consumer負責從Broker中拉取消息并進行處理。
?