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寫入成功即可返回成功
相關文章
- RabbitMQ 入門之基礎概念MQ
- 【Elasticsearch學習】之基礎概念Elasticsearch
- rocketmq 概念MQ
- 4-RocketMQ基礎MQ
- RocketMQ系列:使用systemd管理nameserver和brokerMQServer
- 1 Oracle Data Guard Broker 概念Oracle
- RocketMQ基礎概念剖析,並分析一下Producer的底層原始碼MQ原始碼
- RocketMQ中Broker的刷盤原始碼分析MQ原始碼
- MySQL基礎概念MySql
- NestJS 基礎概念JS
- Vue 基礎概念Vue
- HTTP基礎概念HTTP
- JVM 基礎概念JVM
- Vue基礎概念Vue
- python基礎概念Python
- Elaticsearch基礎概念
- CSS基礎概念記錄之元素型別CSS型別
- RocketMQ基本概念MQ
- RocketMQ 必知概念MQ
- RocketMQ系列1:基礎介紹MQ
- RocketMQ中Broker的啟動原始碼分析(一)MQ原始碼
- RocketMQ(4.8.0)——Broker 的關機恢復機制MQ
- ZooKeeper 概念與基礎
- Spring 5 基礎概念Spring
- MySQL(一)基礎概念MySql
- 1章 基礎概念
- Elastic Stack基礎概念AST
- JavaScript WebGL 基礎概念JavaScriptWeb
- java 基礎概念 (1)Java
- 4、kubernetes基礎概念
- golang的基礎概念Golang
- RocketMQ中Broker的訊息儲存原始碼分析MQ原始碼
- RocketMQ 4.2.0 broker JVM優化引數深入刨析MQJVM優化
- Java 多執行緒設計模式之基礎概念Java執行緒設計模式
- 音視訊基礎概念
- Java基礎概念知識Java
- python爬蟲基礎概念Python爬蟲
- 圖論(一)--基礎概念圖論