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模式消費訊息時,分為以下兩個階段...