聊聊 RocketMQ 消息軌跡
這篇文章,我們聊一聊 RocketMQ 的消息軌跡設計思路。 查詢消息軌跡可作為生產環境中排查問題強有力的數據支持 ,也是研發同學解決線上問題的重要武器之一。 1 基礎概念 消息軌跡是指一條消息從生產者發送到 Broker , 再到消費者消費,整個過程中的各個相關節點的時間、狀態等數據匯聚而成的完整 ... ?
這篇文章,我們聊一聊 RocketMQ 的消息軌跡設計思路。 查詢消息軌跡可作為生產環境中排查問題強有力的數據支持 ,也是研發同學解決線上問題的重要武器之一。 1 基礎概念 消息軌跡是指一條消息從生產者發送到 Broker , 再到消費者消費,整個過程中的各個相關節點的時間、狀態等數據匯聚而成的完整 ... ?
Broker在啟動的時候會注冊定時任務,定時清理過期的數據,默認是每10s執行一次,分別清理CommitLog文件和ConsumeQueue文件: public class DefaultMessageStore implements MessageStore { // CommitLog清理類 p ... ?
MQ系列1:消息中間件執行原理 MQ系列2:消息中間件的技術選型 MQ系列3:RocketMQ 架構分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的發送模式 MQ系列6:消息的消費 MQ系列7:消息通信,追求極致性能 MQ系列8:數據存儲,消息隊列的高可用保障 M ... ?
MQ系列1:消息中間件執行原理 MQ系列2:消息中間件的技術選型 MQ系列3:RocketMQ 架構分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的發送模式 MQ系列6:消息的消費 MQ系列7:消息通信,追求極致性能 MQ系列8:數據存儲,消息隊列的高可用保障 M ... ?
在RocketMQ 5.0以前,有兩種集群部署模式,分別為主從模式(Master-Slave模式)和Dledger模式。 主從模式 主從模式中分為Master和Slave兩個角色,集群中可以有多個Master節點,一個Master節點可以有多個Slave節點。Master節點負責接收生產者發送的寫入 ... ?
Pop模式消費和消息粒度負載均衡 在RocketMQ 5.0之前,消費有兩種方式可以從Broker獲取消息,分別為Pull模式和Push模式。 Pull模式:消費需要不斷的從阻塞隊列中獲取數據,如果沒有數據就等待,這個阻塞隊列中的數據由消息拉取線程從Broker拉取消息之后加入的,所以Pull模式下 ... ?
為了向云原生演進,提高資源利用和彈性能力,RcoketMQ在5.0進行了架構的調整與升級,先來看新特性之一,增加了Proxy層。 增加Proxy代理層 計算存儲分離 計算存儲分離是一種分層架構,將計算層與存儲層分開。 計算層指的是一些消耗計算資源的功能模塊比如協議解析、消費管理等,存儲指的是數據存儲 ... ?
這篇文章,筆者想聊聊 RocketMQ 最佳實踐之一:保證訂閱關系一致。 訂閱關系一致指的是同一個消費者 Group ID 下所有 Consumer 實例所訂閱的 Topic 、Tag 必須完全一致。 如果訂閱關系不一致,消息消費的邏輯就會混亂,甚至導致消息丟失。 1 訂閱關系演示 首先我們展示正確 ... ?
CommitLog 生產者向Broker發送的消息,會以順序寫的方式,寫入CommitLog文件,CommitLog文件的根目錄由配置參數storePathRootDir決定,默認每一個CommitLog的文件大小為1G,如果文件寫滿會新建一個CommitLog文件,以該文件中第一條消息的偏移量為文 ... ?
RocketMQ在開啟Dledger時,使用DLedgerCommitLog,其他情況使用的是CommitLog來管理消息的存儲。在Dledger模式下,消息寫入時Leader節點還需要將消息轉發給Follower節點,有過半的節點響應成功,消息才算寫入成功。 Leader消息寫入 Dledger下 ... ?
RocketMQ 4.5版本之前,可以采用主從架構進行集群部署,但是如果master節點掛掉,不能自動在集群中選舉出新的Master節點,需要人工介入,在4.5版本之后提供了DLedger模式,使用Raft算法,如果Master節點出現故障,可以自動選舉出新的Master進行切換。 Raft協議 R ... ?
RocketMQ支持集群部署來保證高可用。它基于主從模式,將節點分為Master、Slave兩個角色,集群中可以有多個Master節點,一個Master節點可以有多個Slave節點。Master節點負責接收生產者發送的寫入請求,將消息寫入CommitLog文件,Slave節點會與Master節點建立 ... ?
消費者負載均衡,是指為消費組下的每個消費者分配訂閱主題下的消費隊列,分配了消費隊列消費者就可以知道去消費哪個消費隊列上面的消息,這里針對集群模式,因為廣播模式,所有的消息隊列可以被消費組下的每個消費者消費不涉及負載均衡,而集群模式一個消息隊列同一時間只能分配給組內的一個消費者進行消費。 Rocket ... ?
RocketMQ事務的使用場景 單體架構下的事務 在單體系統的開發過程中,假如某個場景下需要對數據庫的多張表進行操作,為了保證數據的一致性,一般會使用事務,將所有的操作全部提交或者在出錯的時候全部回滾。以創建訂單為例,假設下單后需要做兩個操作: 在訂單表生成訂單 在積分表增加本次訂單增加的積分記錄 ... ?
這篇文章我們聊聊廣播消費,因為廣播消費在某些場景下真的有奇效。筆者會從基礎概念、實現機制、實戰案例、注意事項四個方面一一展開,希望能幫助到大家。 1 基礎概念 RocketMQ 支持兩種消息模式:集群消費( Clustering )和廣播消費( Broadcasting )。 集群消費: 同一 To ... ?
全局有序 在RocketMQ中,如果使消息全局有序,可以為Topic設置一個消息隊列,使用一個生產者單線程發送數據,消費者端也使用單線程進行消費,從而保證消息的全局有序,但是這種方式效率低,一般不使用。 局部有序 假設一個Topic分配了兩個消息隊列,生產者在發送消息的時候,可以對消息設置一個路由I ... ?
消費者從Broker拉取到消息之后,會將消息提交到線程池中進行消費,RocketMQ消息消費是批量進行的,如果一批消息的個數小于預先設置的批量消費大小,直接構建消費請求ConsumeRequest將消費請求提交到線程池處理,否則需要分批構建進行提交。 消息消費 在消息被提交到線程池后進行處理時,會調 ... ?
RocketMQ 消息重試與死信隊列 RocketMQ 前面系列文章如下: RocketMQ系列(一) 基本介紹 RocketMQ 系列(二) 環境搭建 RocketMQ 系列(三) 集成 SpringBoot RocketMQ 系列(四) 消息存儲 RocketMQ 系列(五)高可用與負載均衡 消 ... ?
RocketMQ設定了延遲級別可以讓消息延遲消費,延遲消息會使用SCHEDULE_TOPIC_XXXX這個主題,每個延遲等級對應一個消息隊列,并且與普通消息一樣,會保存每個消息隊列的消費進度(delayOffset.json中的offsetTable): public class MessageSt ... ?
RocketMQ 系列(五)高可用與負載均衡 RocketMQ 前面系列文章如下: RocketMQ系列(一) 基本介紹 RocketMQ 系列(二) 環境搭建 RocketMQ 系列(三) 集成 SpringBoot RocketMQ 系列(四) 消息存儲 上一篇講了 RocketMQ 的消息存儲 ... ?