資料內(nèi)容:
1 消息模型(Message Model) RocketMQ主要由 Producer、Broker、Consumer 三部分組成,其中Producer 負責生產(chǎn)消息, Consumer 負責消費消息,Broker 負責存儲消息。Broker 在實際部署過程中對應一臺服務器,每個 Broker 可以存儲多個Topic的消息,每個Topic的消息也可以分片存儲于不同的 Broker。Message Queue 用于存儲消息的物理地址,每個Topic中的消息地址存儲于多個 Message Queue 中。 ConsumerGroup 由多個Consumer 實例構(gòu)成。 2 消息生產(chǎn)者(Producer) 負責生產(chǎn)消息,一般由業(yè)務系統(tǒng)負責生產(chǎn)消息。一個消息生產(chǎn)者會把業(yè)務應用系統(tǒng)里產(chǎn)生的消息發(fā)送到 broker服務器。RocketMQ提供多種發(fā)送方式,同步發(fā)送、異步發(fā)送、順序發(fā)送、單向發(fā)送。同步和異 步方式均需要Broker返回確認信息,單向發(fā)送不需要。 生產(chǎn)者中,會把同一類Producer組成一個集合,叫做生產(chǎn)者組,這類Producer發(fā)送同一類消息且發(fā)送 邏輯一致。如果發(fā)送的是事務消息且原始生產(chǎn)者在發(fā)送之后崩潰,則Broker服務器會聯(lián)系同一生產(chǎn)者組 的其他生產(chǎn)者實例以提交或回溯消費。 3 消息消費者(Consumer) 負責消費消息,一般是后臺系統(tǒng)負責異步消費。一個消息消費者會從Broker服務器拉取消息、并將其提 供給應用程序。從用戶應用的角度而言提供了兩種消費形式:拉取式消費、推動式消費。 拉取式消費的應用通常主動調(diào)用Consumer的拉消息方法從Broker服務器拉消息、主動權(quán)由應用控 制。一旦獲取了批量消息,應用就會啟動消費過程。 推動式消費模式下Broker收到數(shù)據(jù)后會主動推送給消費端,該消費模式一般實時性較高。 消費者同樣會把同一類Consumer組成一個集合,叫做消費者組,這類Consumer通常消費同一類消息 且消費邏輯一致。消費者組使得在消息消費方面,實現(xiàn)負載均衡和容錯的目標變得非常容易。要注意的 是,消費者組的消費者實例必須訂閱完全相同的Topic。RocketMQ 支持兩種消息模式:集群消費 (Clustering)和廣播消費(Broadcasting)。 集群消費模式下,相同Consumer Group的每個Consumer實例平均分攤消息。 廣播消費模式下,相同Consumer Group的每個Consumer實例都接收全量的消息。 4 主題(Topic) 表示一類消息的集合,每個主題包含若干條消息,每條消息只能屬于一個主題,是RocketMQ進行消息 訂閱的基本單位。 同一個Topic下的數(shù)據(jù),會分片保存到不同的Broker上,而每一個分片單位,就叫做MessageQueue。 MessageQueue是生產(chǎn)者發(fā)送消息與消費者消費消息的最小單位。 5 代理服務器(Broker Server) 消息中轉(zhuǎn)角色,負責存儲消息、轉(zhuǎn)發(fā)消息。代理服務器在RocketMQ系統(tǒng)中負責接收從生產(chǎn)者發(fā)送來的 消息并存儲、同時為消費者的拉取請求作準備。代理服務器也存儲消息相關(guān)的元數(shù)據(jù),包括消費者組、 消費進度偏移和主題和隊列消息等。 Broker Server是RocketMQ真正的業(yè)務核心,包含了多個重要的子模塊: