RocketMQ架構原理解析(一):整體架構


RocketMQ架構原理解析(一):整體架構
RocketMQ架構原理解析(二):消息存儲(CommitLog)
RocketMQ架構原理解析(三):消息索引(ConsumeQueue & IndexFile)
RocketMQ架構原理解析(四):消息生產端(Producer)

一、概述

RocketMQ作為一個apache的頂級項目,擁有將近16K的star,它穩定的系統及強悍的性能,無疑在國內已經成為了企業消息隊列的首選。接下來的一段時間,鄙人准備出一系列文章,從源碼出發,逐一剖析RocketMQ的架構設計原理

本文將僅做概念上的陳述

github地址

二、概念及模型

本文中部分概念描述搬運自github官網

RocketMQ主要由 Producer、Broker、Consumer 三部分組成,其中Producer 負責生產消息,Consumer 負責消費消息,Broker 負責存儲消息。其他概念隨着行文逐一展開。

1_整體架構

圖片搬運自官網

2.1 消息生產者(Producer)

負責生產消息,一般由業務系統負責生產消息。一個消息生產者會把業務應用系統里產生的消息發送到broker服務器。RocketMQ提供多種發送方式,同步發送、異步發送、順序發送、單向發送。同步和異步方式均需要Broker返回確認信息,單向發送不需要。

2.2 消息消費者(Consumer)

負責消費消息,一般是后台系統負責異步消費。一個消息消費者會從Broker服務器拉取消息、並將其提供給應用程序。從用戶應用的角度而言提供了兩種消費形式:拉取式消費、推動式消費。

2.3 服務器(Broker Server)

消息中轉角色,負責存儲消息、轉發消息。代理服務器在RocketMQ系統中負責接收從生產者發送來的消息並存儲、同時為消費者的拉取請求作准備。代理服務器也存儲消息相關的元數據,包括消費者組、消費進度偏移和主題和隊列消息等。

2.3 主題(Topic)

表示一類消息的集合,每個主題包含若干條消息,每條消息只能屬於一個主題,是RocketMQ進行消息訂閱的基本單位。

三、部署架構

1_部署架構

圖片搬運自官網

RocketMQ各模塊啟動順序如下:

  1. 控制中心 啟動NameServer,NameServer起來后監聽端口,等待Broker、Producer、Consumer連上來,相當於一個路由控制中心
  2. 服務端 Broker啟動,跟所有的NameServer保持長連接,定時發送心跳包。心跳包中包含當前Broker信息(IP+端口等)以及存儲所有Topic信息。注冊成功后,NameServer集群中就有Topic跟Broker的映射關系
  3. 必要環節 收發消息前,先創建Topic,創建Topic時需要指定該Topic要存儲在哪些Broker上,也可以在發送消息時自動創建Topic
  4. 客戶端1-生產消息 Producer發送消息,啟動時先跟NameServer集群中的其中一台建立長連接,並從NameServer中獲取當前發送的Topic存在哪些Broker上,輪詢從隊列列表中選擇一個隊列,然后與隊列所在的Broker建立長連接從而向Broker發消息
  5. 客戶端2-消費消息 Consumer跟Producer類似,跟其中一台NameServer建立長連接,獲取當前訂閱Topic存在哪些Broker上,然后直接跟Broker建立連接通道,開始消費消息

四、消息存儲

1_消息存儲模型

后文會逐一展開


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM