RocketMQ(4)---RocketMQ核心配置講解


RocketMQ核心配置講解

RocketMQ的核心配置在broker.conf配置文件里,下面我們來分析下它。

一、broker.conf配置

下面只列舉一些常用的核心配置講解。

1、broker.conf核心配置講解

# nameServer地址,如果nameserver是多台集群的話,就用分號分割
namesrvAddr=172.1.21.29:9876;143.13.262.43:9876
# 所屬集群名字(同一主從下:Master和slave名稱要一致)
brokerClusterName=rocketmq-cluster
# broker名字,注意此處不同的配置文件填寫的不一樣  例如:在a.properties 文件中寫 broker-a  在b.properties 文件中寫 broker-b
brokerName=broker-a
# 0 表示 Master,>0 表示 Slave
brokerId=0
# Broker 對外服務的監聽端口
listenPort=10911
# 在發送消息時,自動創建服務器不存在的topic,默認創建的隊列數。由於是4個broker節點,所以設置為4
# defaultTopicQueueNums=4
# 是否允許 Broker 自動創建Topic,建議線下開啟,線上關閉
autoCreateTopicEnable=true
# 是否允許 Broker 自動創建訂閱組,建議線下開啟,線上關閉
autoCreateSubscriptionGroup=true
# commitLog每個文件的大小默認1G
mapedFileSizeCommitLog=1073741824
# ConsumeQueue每個文件默認存30W條,根據業務情況調整
mapedFileSizeConsumeQueue=300000
# 檢測可用的磁盤空間大小,當磁盤被占用超過90%,消息寫入會直接報錯                    
diskMaxUsedSpaceRatio=90
# Broker 的角色: ASYNC_MASTER 異步復制Master ; SYNC_MASTER 同步雙寫Master; SLAVE
brokerRole=SYNC_MASTER
# 刷盤方式 ASYNC_FLUSH 異步刷盤; SYNC_FLUSH 同步刷盤
flushDiskType=ASYNC_FLUSH

2、同步刷盤 or 異步刷盤

同步刷盤和異步刷盤指的是 內存和磁盤 的關系。

RocketMQ的消息最終是是存儲到磁盤上的,這樣既能保證斷電后恢復,又可以讓存儲的消息量超出內存的限制。

從客戶端發送消息,一開始先寫到內存,再寫到磁盤上。如下圖所示

兩種策略

同步刷盤:當數據成功寫到內存中之后立刻刷盤(同步),在保證消息寫到磁盤也成功的前提下返回寫成功狀態。

異步刷盤 :數據寫入內存后,直接返回成功狀態。異步將內存中的數據持久化到磁盤上。

同步刷盤和異步輸盤的優劣

同步刷盤

優點:保證了數據的可靠性,保證數據不會丟失。

缺點:同步刷盤效率較低,因為需要內存將消息寫入磁盤后才返回成功狀態。

異步刷盤

優點:異步刷盤可以提高系統的吞吐量。因為它僅僅是寫入內存成功后,就返回成功狀態。

缺點:異步刷盤不能保證數據的可靠性。因為寫入內存成功,但寫入磁盤的時候因為某種原因寫入失敗,那就會丟失該條消息。

3、同步復制 or 異步復制

同步復制和異步復制指的是 Master節點和slave節點 的關系。

如果一個Broker組有Master和Slave,消息需要從Master復制到Slave上

兩種策略

同步復制: 當數據成功寫到內存中Master節點之后立刻同步到Slave中,當Slave也成功的前提下返回寫成功狀態。

異步復制: 當數據成功寫到內存中Master節點之后,直接返回成功狀態,異步將Master數據存入Slave節點。

同步復制和異步復制的優劣:

同步復制 : 數據安全性高,性能低一點。

異步復制 : 數據可能丟失,性能高一點。


建議 線上采用 同步復制 + 異步刷盤;



只要自己變優秀了,其他的事情才會跟着好起來(上將1)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM