1. 程式人生 > >RocketMQ架構原理及名詞概念(三)

RocketMQ架構原理及名詞概念(三)

這節主要講述RocketMQ的整體架構,和常用術語解釋。當我們接觸一個新東西的時候,一定要知道他的原理,只有知道原理之後,才會產生問題。只有帶著問題去讀原始碼才會事半功倍。

首先盜用官方的一張圖片:(官方地址:http://rocketmq.apache.org/)

NameServer:從上圖可以清楚的看到NameServer主要乾了兩件事情,服務發現和路由。如果你知道zookeeper就可以很好理解NameServer了。NameServer就是一個輕量級的zookeeper。多個NameServer可以橫向擴充套件,且它們之間沒有任何通訊。

Broker:Broker是RocketMQ的核心組成部分,通過輕量級的Topic和佇列機制來維護訊息儲存,Broker支援訊息Push和Pull模式。支援千億級別的訊息堆積能力,總之很強大。

Producer:顧名思義生產者,Producer去NameServer獲取Broker列表,進行輪詢傳送訊息。每個生產者都有一個ID(編號),多個生產者例項可以共用同一個ID。同一個ID下所有例項組成一個生產者叢集。

Consumer:顧名思義消費者,Consumer去NameServer獲取Broker列表,進行訊息消費,支援Push和Pull兩種模式。每個訂閱者也有一個ID(編號),多個消費者例項可以共用同一個ID。同一個ID下所有例項組成一個消費者叢集。

 

原始碼模組說明(RokcetMQ版本4.3.1):

rocketmq-broker:服務端,接受訊息,儲存訊息,consumer拉取訊息

rocketmq-client:訊息傳送和接收,包含consumer和producer

rocketmq-common:通用的列舉、基類方法、或者資料結構,包名有admin、consumer、filter、hook、message

rocketmq-distribution:指令碼、配置模組,RocketMQ編譯時,bin目錄,benchmark目錄,conf目錄都是從這個模組編譯輸出的

rocketmq-example:示例模組

rocketmq-filter:訊息過濾器

rocketmq-logappender:日誌

rocketmq-logging:日誌

rocketmq-namesrv:NameServer,類似服務註冊中心,broker在這裡註冊,consumer和producer在這裡找到broker地址

rocketmq-openmessaging:RocketMQ支援openmessaging,詳見:http://openmessaging.cloud

rocketmq-remoting:使用netty的客戶端、服務端,使用fastjson序列化,自定義二進位制協議

rocketmq-srvutil:只有一個ServerUtil類,只提供Server程式依賴,儘可能減少客戶端依賴

rocketmq-store:訊息儲存,索引,consumerLog,commitLog等

rocketmq-tools:命令列工具