9 RocketMQ整體架構詳解

2021-08-17 01:48:22 字數 1542 閱讀 7693

rocketmq原始碼包下有9個模組:

rocketmq-broker

rocketmq-store

rocketmq-common

rocketmq-srvutil

rocketmq-tools

rocketmq-namesrv

rocketmq-remoting

rocketmq-client

rocketmq-filtersrv

#模組介紹

rocketmq-broker

對consumer和producer來說是服務端,接收producer發來的訊息並儲存,同時consumer來這裡拉取訊息。真正的mq服務

rocketmq-store

儲存服務,訊息儲存,索引儲存,commitlog儲存。負責對資料刷盤、寫盤、儲存

rocketmq-common

通用的常量列舉、基類方法或者資料結構,按描述的目標來分包通俗易懂。包名有:admin,consumer,fileter,hook,message等。 封裝了一些公用的方法,供其他模組使用

rocketmq-srvutil

只有乙個serverutil類,提供server程式依賴,目的是為了拆解客戶端依賴,盡可能減少客戶端的依賴。

rocketmq-tools

命令列工具

rocketmq-namesrv

類似soa服務的註冊中心,這裡儲存著訊息的topicname,佇列等執行時的meta資訊。一般系統分datanode和namenode,這裡是namenode。沒有任何角色去使用,都是nameserver去監控別個,這個是服務發現的概念

rocketmq-remoting

用netty4寫的客戶端和服務端,fastjson(阿里自己的)做的序列化,自定義二進位制協議。用於底層資料通訊。

rocketmq-client

客戶端,包含producer端和consumer端(的api),傳送訊息和接收訊息的過程。

rocketmq-filtersrv

訊息過濾器server

#層次  rocketmq-broker     rocketmq-filtersrv       rocketmq-tools     rocketmq-namesrv(元件:可單獨使用)

|rocketmq-store(儲存)       rocketmq-client

|rocketmq-srvutil(服務發現解耦)

|rocketmq-common(公共包)  rocketmq-remoting(通訊)

#nameserver與zookeeper

rmq2x版本用的是zookerper,3版本為何摒棄,訊息投遞和消費要記錄乙個位置,這個位置之前是放在zookeeper上去儲存的,這就導致頻繁操作zookeeper,雖然zookeeper讀寫效能都挺高,但是應用到阿里,天貓百萬級別就有點擋不住了,所以3版本就捨棄了zookeeper,真正的儲存包括記錄位置都放在了broker裡面來做,nameserver單純的實現乙個路由的機制,這也就是效能提高的關鍵點。

#底層通訊

用netty來做,非同步io模型

商品上下架RocketMQ同步實現

商品的上下架,改造一下,我們的goodsservice裡的 autowired private rocketmqtemplate rocketmqtemplate 修改上下架的狀態 param spuid param saleable return transactional public void...

整體優化的9個技巧

內容策略 網頁細節的優化和完善 制訂增加反向鏈結計畫以前的工作都做好了,最重要的就是要制訂乙個合理的增加反向鏈結計畫,然後選擇幾種合理的增加反向鏈結手段,然後按照計畫需序漸進的去做,獲得好排名就只是時間問題了。切記 不可短時間內迅速增加非常多的高質量的反向鏈結,比如短短兩三天,增加幾百個pr值都是4...

RocketMQ 9 訊息堆積與消費延遲

訊息處理流程中,如果consumer的消費速度跟不上producer的傳送速度,mq中未處理的訊息會越來越多 進的多出的少 這部分訊息就被稱為堆積訊息。訊息出現堆積進而會造成訊息的消費延遲。以下場景需要重點關注訊息堆積和消費延遲問題 consumer使用長輪詢pull模式消費訊息時,分為以下兩個階段...