Apache RocketMQ 刷盤策略與復(fù)制策略

1.png

Apache RocketMQ 刷盤策略與復(fù)制策略

Apache RocketMQ 系列:

Apache RocketMQ之JMS基本概念及使用:http://www.itdecent.cn/p/d2e3fd77c4f4
Apache RocketMQ 基礎(chǔ)概念及架構(gòu)解析:http://www.itdecent.cn/p/95ab928960b3
Apache RocketMQ 的基礎(chǔ)特性介紹:http://www.itdecent.cn/p/570680b32590
Apache RocketMQ 集群搭建(兩主兩從):http://www.itdecent.cn/p/b090138cf52c
Apache RocketMQ 刷盤策略與復(fù)制策略: http://www.itdecent.cn/p/d66b381428bb


RocketMQ 的所有消息都是持久化的,先寫入系統(tǒng) PAGECACHE,然后刷盤,可以保證內(nèi)存與磁盤都有一份數(shù)據(jù),訪問時(shí),直接從內(nèi)存讀取。

異步刷盤(ASYNC_FLUSH):
1.png

返回成功狀態(tài)時(shí),消息只是被寫入內(nèi)存 pagecache,寫操作返回快,吞吐量達(dá),當(dāng)內(nèi)存里的消息積累到一定程度時(shí),統(tǒng)一出發(fā)寫磁盤動(dòng)作,快速寫入。

在有 RAID 卡,SAS 15000 轉(zhuǎn)磁盤測試順序?qū)懳募?,速度可以達(dá)到 300M 每秒左右,而線上的網(wǎng)卡一般都為千兆網(wǎng)卡,寫磁盤速度明顯快于數(shù)據(jù)網(wǎng)絡(luò)入口速度,那舉是否可以做到寫完內(nèi)存就吐用戶返回,由后臺線程刷盤呢?

  1. 由于磁盤速度大于網(wǎng)卡速度,那么刷盤的進(jìn)度肯定可以跟上消息的寫入速度。

  2. 萬一由于此時(shí)系統(tǒng)壓力過大,可能堆積消息,除了寫入 IO,還有讀取 IO,萬一出現(xiàn)磁盤讀取落后情況,
    會不會導(dǎo)致系統(tǒng)內(nèi)存溢出,答案是否定的,原因如下:

    a) 寫入消息到 pagecache 時(shí),如果內(nèi)存不足,則嘗試丟棄干凈的 page,騰出內(nèi)存供新消息使用,策略是 LRU 方式。

    b) 如果干凈頁不足,此時(shí)寫入 pagecache 會被阻塞,系統(tǒng)嘗試刷盤部分?jǐn)?shù)據(jù),大約每次嘗試 32 個(gè) page,來找出更多干凈 page。

綜上,內(nèi)存溢出的情冴不會出現(xiàn)。

同步刷盤(SYNC_FLUSH):
2.png

返回成功狀態(tài)時(shí),消息已經(jīng)被寫入磁盤。

消息寫入內(nèi)存 pagecache 后,立即通知刷盤線程,刷盤完成后,返回消息寫成功的狀態(tài)。

同步刷盤與異步刷盤的唯一區(qū)別是異步刷盤寫完 pagecache 直接返回,而同步刷盤需要等待刷盤完成才返回,
同步刷盤流程如下:

  1. 寫入 pagecache 后,線程等待,通知刷盤線程刷盤。

  2. 刷盤線程刷盤后,喚醒前端等待線程,可能是一批線程。

  3. 前端等待線程吐用戶返回成功。

復(fù)制策略:
同步復(fù)制(SYNC_MASTER):

master 和 slave 都寫成功后返回成功狀態(tài)。好處是如果master出故障,slave上有全部備份,容易恢復(fù)。缺點(diǎn)是增大延遲,降低吞吐量。

異步復(fù)制(ASYNC_MASTER):

只要 master 寫成功就返回成功狀態(tài)。好處是低延遲、高吞吐,缺點(diǎn)是如果 master 出故障,數(shù)據(jù)沒有寫入 slave,就會有丟失。

推薦策略: 異步刷盤(ASYNC_FLUSH) + 同步復(fù)制(SYNC_MASTER)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容