rocketmq 同步刷盘和异步刷盘以及主从复制之同步复制和异步复制你理解了吗
?
同步刷盤、異步刷盤
RocketMQ的消息是存儲到磁盤上的,這樣既能保證斷電后恢復,又可以讓存儲的消息量超出內存的限制。
RocketMQ為了提高性能,會盡可能地保證磁盤的順序寫。消息在通過Producer寫入RocketMQ的時候,有兩種
寫磁盤方式:
1)異步刷盤方式:在返回寫成功狀態(tài)時,消息可能只是被寫入了內存的PAGECACHE,寫操作的返回快,
吞吐量大;當內存里的消息量積累到一定程度時,統(tǒng)一觸發(fā)寫磁盤操作,快速寫入
2)同步刷盤方式:在返回寫成功狀態(tài)時,消息已經被寫入磁盤。具體流程是,消息寫入內存的PAGECACHE后,立刻
通知刷盤線程刷盤,然后等待刷盤完成,刷盤線程執(zhí)行完成后喚醒等待的線程,返回消息寫成功的狀態(tài)
?
同步刷盤還是異步刷盤,是通過Broker配置文件里的flushDiskType參數設置的,這個參數被設置成SYNC_FLUSH、ASYNC_FLUSH中的一個
?
?
同步復制、異步復制
如果一個broker組有Master和Slave,消息需要從Master復制到Slave上,有同步和異步兩種復制方式。
同步復制是等Master和Slave
均寫成功后才反饋給客戶端寫成功狀態(tài);異步復制方式是只要Master寫成功即可反饋給客戶端寫成功狀態(tài)
這兩種復制方式各有優(yōu)劣,在異步復制方式下,系統(tǒng)擁有較低的延遲和較高的吞吐量,但是如果Master
出了故障,有些數據因為沒有被寫入Slave,有可能會丟失;在同步復制方式下,如果Master出故障,Slave
上有全部的備份數據,容易恢復,但是同步復制會增大數據寫入延遲,降低系統(tǒng)吞吐量。
同步復制和異步復制是通過Broker配置文件里的brokerRole參數進行設置的,這個參數可以被設置成
ASYNC_MASTER、SYNC_MASTER、SLAVE三個值中的一個。
?
?
?
實際應用中要結合業(yè)務場景,合理設置刷盤方式和主從復制方式,尤其是SYNC_FLUSH方式,由于頻繁
的觸發(fā)寫磁盤動作,會明顯降低性能。通常情況下,應該把Master和Slave設置成ASYNC_FLUSH的刷盤方式,
主從之間配置成SYNC_MASTER的復制方式,這樣即使有一臺機器出故障,仍然可以保證數據不丟。
?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的rocketmq 同步刷盘和异步刷盘以及主从复制之同步复制和异步复制你理解了吗的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python模块 | 多种操作系统接口—
- 下一篇: RocketMQ消息重试机制