RocketMQ基礎概念之Broker
Broker是RocketMQ的核心,大部分工作都在Broker中完成,包括接收請求,處理消費,消費持久,訊息的HA,以及服務端過濾等都在裡面完成
訊息的儲存和傳送
因為有HA,所以需要磁碟持久化
磁碟使用的好壞,可以突破網路的瓶頸
MappedByteBuffer,基於零拷貝技術,由核心態直接往網路卡上傳送資料,避免了使用者態的複製
儲存結構
ConsumeQueue+CommitLog
ConsumeQueue類似index索引
CommitLog順序寫大大提升寫的效率。
雖然是隨機讀,但是有pagecache機制,可以批量從磁碟讀取,作為cache存到記憶體中,加速後續讀取速度。
為了保證順序寫,ConsumeQueue裡只存偏移量資訊,所以尺寸有限,大部分ConsumeQueue能被完全讀入記憶體
HA
高可用是通過Master-Slave的方式達到高可用的。brokerId為0是Master,大於0是Slave
消費端的高可用 Consumer不需要配置,如果Master不可用或者繁忙的時候,會自動切換Slave讀
生產端的高可用 建立Topic的時候把多個Msg Queue建立在多個Broker組上,相同name不同id的機器為broker組,這樣當一個broker組的Master不可用後其他組的Master依然可用。
暫不支援Slave自動轉換為Master,需要重新配置和重啟。
刷盤
順序寫,有兩種刷盤方式 flushType (SYNC_FLUSH/ASYNC_FLUSH)
非同步刷盤 寫入的是記憶體的packageCache,寫操作返回快,吞吐量大,記憶體訊息積累到一定值刷盤快速寫入。
同步刷盤 寫入的是記憶體的packageCache,寫入完成立馬通知刷盤執行緒等到刷盤完成,然後喚醒等待的執行緒回寫寫入成功狀態
複製
一個Broker組內Master和Slave複製。 brokerRole()
同步複製,Master和Slave都寫成功才反饋客戶端成功
非同步複製,Master寫入成功即可返回成功
相關文章
- RocketMQ——Broker篇MQ
- RabbitMQ 入門之基礎概念MQ
- 【Elasticsearch學習】之基礎概念Elasticsearch
- 轉載《Data Guard Broker基礎》
- rocketmq 概念MQ
- 4-RocketMQ基礎MQ
- mysql基礎概念之socket檔案MySql
- RocketMQ系列:使用systemd管理nameserver和brokerMQServer
- SOA之(1)——SOA架構基礎概念架構
- RocketMQ基礎概念剖析,並分析一下Producer的底層原始碼MQ原始碼
- 1 Oracle Data Guard Broker 概念Oracle
- RocketMQ中Broker的刷盤原始碼分析MQ原始碼
- Vue 基礎概念Vue
- MySQL基礎概念MySql
- HTTP基礎概念HTTP
- JVM 基礎概念JVM
- Vue基礎概念Vue
- Elaticsearch基礎概念
- Oracle基礎概念Oracle
- Bamboo基礎概念
- CSS基礎概念記錄之元素型別CSS型別
- RocketMQ基本概念MQ
- RocketMQ 必知概念MQ
- RocketMQ中Broker的啟動原始碼分析(一)MQ原始碼
- RocketMQ(4.8.0)——Broker 的關機恢復機制MQ
- 1章 基礎概念
- java 基礎概念 (1)Java
- JavaScript WebGL 基礎概念JavaScriptWeb
- Elastic Stack基礎概念AST
- MySQL(一)基礎概念MySql
- ZooKeeper 概念與基礎
- tensorflow基礎概念
- Hadoop 基礎概念Hadoop
- 一、storm基礎概念ORM
- NestJS 基礎概念JS
- python基礎概念Python
- RocketMQ中Broker的訊息儲存原始碼分析MQ原始碼
- RocketMQ 4.2.0 broker JVM優化引數深入刨析MQJVM優化