這節主要講述rocketmq的整體架構,和常用術語解釋。當我們接觸乙個新東西的時候,一定要知道他的原理,只有知道原理之後,才會產生問題。只有帶著問題去讀原始碼才會事半功倍。
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-logging:日誌
rocketmq-openmessaging:rocketmq支援openmessaging,詳見:
rocketmq-remoting:使用netty的客戶端、服務端,使用fastjson序列化,自定義二進位制協議
rocketmq-srvutil:只有乙個serverutil類,只提供server程式依賴,盡可能減少客戶端依賴
rocketmq-store:訊息儲存,索引,consumerlog,commitlog等
rocketmq-tools:命令列工具
RocketMQ架構原理
結合部署結構圖,描述集群工作流程 1,啟動namesrv,namesrv起來後監聽埠,等待broker produer consumer連上來,相當於乙個路由控制中心。2,broker啟動,跟所有的namesrv保持長連線,定時傳送心跳包。心跳包中包含當前broker資訊 ip 埠等 以及儲存所有t...
RocketMQ架構原理
訊息模型。rocketmq主要由producer broker consumer三部分組成,其中producer負責生產訊息,consumer負責消費訊息,broker負責儲存訊息。broker在實際部署過程中對應一台伺服器,每個broker可以儲存多個topic的訊息,每個topic的訊息也可以分...
RocketMQ架構簡介
apache rocketmq是一款具有低延遲,高效能和可靠性,數十億容量和靈活可擴充套件性的分布式訊息傳遞和流 平台。它由四部分組成 name servers,brokers,producers和consumers。它們中的每乙個都可以在沒有單點故障的情況下進行水平擴充套件。name server...