#broker集群名稱,用於划分broker
brokerClusterName=MQCluster001 #broker名稱,用於主從配對,相同名稱的broker才能做主從設置
brokerName=mq_broker_1 #用於標識主從關系,0為主,其他大於0的為從(不能小於0)master設置0,slave設置1。Master角色的Broker支持讀和寫,Slave角色的Broker僅支持讀,也就是Producer只能和Master角色的Broker連接寫人消息:Consumer可以連接Master角色的Broker,也可以連接Slave角色的Broker來讀取消息。 #Master節點設置
brokerId=0
#Slave節點設置 #brokerId=1 #name server服務器地址及端口,可以是多個,分號隔開
namesrvAddr=192.168.1.100:9876
#創建topic時,若未指定topic下的隊列數,則取該默認值作為默認隊列數
defaultTopicQueueNums=8
#是否自動創建默認topic,生產需保持關閉
autoCreateTopicEnable=true
#是否自動創建topic的訂閱組,默認開啟
autoCreateSubscriptionGroup=true
#broker服務監聽端口
listenPort=10911
#未消費的持久化消息清理時間點
deleteWhen=04
#持久化消息保存周期(單位:小時),超過該周期將被清理
fileReservedTime=24
#單個commitLog文件的大小限制(單位:字節)
mapedFileSizeCommitLog=1073741824
#單個consumeQueue大小限制(存儲的消息條數 * 每條消息的索引大小20)
mapedFileSizeConsumeQueue=8000000
#存儲使用率閥值,當使用率超過閥值時,將拒絕發送消息請求
diskMaxUsedSpaceRatio=88
#持久化消息存儲根路徑
storePathRootDir=/data/store #commitLog文件存儲路徑
storePathCommitLog=/data/store/commitlog #最大消息大小限制(單位:字節)
maxMessageSize=65536
#commitLog最少刷盤page數
flushCommitLogLeastPages=4
#consumeQueue最少刷盤page數
flushConsumeQueueLeastPages=2
#commitLog刷盤間隔時間
flushCommitLogThoroughInterval=10000
#consumeQueue刷盤間隔時間
flushConsumeQueueThoroughInterval=60000
#處理消息發送線程池大小
sendMessageThreadPoolNums=128
#處理消息拉取線程池大小
pullMessageThreadPoolNums=128
#broker角色(SYNC_MASTER:同步雙寫Master、ASYNC_MASTER:異步復制Master、SLAVE:Slave)
brokerRole=ASYNC_MASTER #Slave節點設置 #brokerRole=SLAVE #刷盤方式(ASYNC_FLUSH:異步刷盤、SYNC_FLUSH:同步刷盤)
flushDiskType=ASYNC_FLUSH
刷盤方式與同步方式(以上flushDiskType配置)
異步刷盤方式:在返回寫成功狀態時,消息可能只是被寫人了內存的PAGECACHE ,寫操作的返回快,吞吐量大;當內存里的消息量積累到一定程度時,統一觸發寫磁盤動作,快速寫人。
同步刷盤方式:在返回寫成功狀態時,消息已經被寫入了磁盤。具體流程是,消息、寫入內存的PAGECACHE 后,立刻通知刷盤線程刷盤,然后等待刷盤成,刷盤線程執行完成后喚醒等待的線程,返回消息寫成功的狀態。
broker的同步於異步復制(以上brokerRole配置)
同步復制:
同步復制是等Master和Slave均成功寫成功后才反饋給客戶端寫成功狀態。
如果Master出故障,Slave上有全部的備份數據,容易恢復,但是同步復制會增大數據寫人延遲,降低系統吞吐量。
異步復制:
只要是Master寫成功后即返回客戶端寫成功狀態。
系統擁有較低的延遲和較高的吞吐量,但是如果Master出了故障,有些數據因為沒有被寫人Slave ,有可能會丟失
通常情況下,應該把Master和Save配置成ASYNC FLUSH的刷盤方式,主從之間配置成SYNC MASTER的復制方式,這樣即使有一台機器出故障,仍然能保證數據不丟,是個不錯的選擇。
