Python知識(shí)分享網(wǎng) - 專業(yè)的Python學(xué)習(xí)網(wǎng)站 學(xué)Python,上Python222
行業(yè)案例:OPPO緩存層6次版本迭代的異地多活實(shí)踐 PDF 下載
匿名網(wǎng)友發(fā)布于:2024-11-02 08:46:16
(侵權(quán)舉報(bào))
(假如點(diǎn)擊沒反應(yīng),多刷新兩次就OK!)

行業(yè)案例:OPPO緩存層6次版本迭代的異地多活實(shí)踐  PDF 下載 圖1

 

 

資料內(nèi)容:

 

針對(duì)上面起源版本問題我們做一些解決辦法。

可靠的DB

我們引入一個(gè)DB,把同步進(jìn)程每次同步的位置寫入到DB里面去,同步進(jìn)程重啟的時(shí)候首先從DB找到自 己的o?set,然后從o?set后面開始數(shù)據(jù)同步就可以了。

流水記錄

參考mysql的方式,把所有的寫入數(shù)據(jù)按照時(shí)間的先后用流水日志的方式記錄下來不能被修改,在沒有 同步到別的機(jī)房前也不能被刪除。 經(jīng)過上面的修改后我們得到修改版本一。

把修改版本一放到生產(chǎn)環(huán)境跑了幾天后,又會(huì)發(fā)現(xiàn)一些問題:

性能低下

同步進(jìn)程每次同步一條數(shù)據(jù)都要修改Mysql同步o?set,導(dǎo)致同步進(jìn)程性能低下

單機(jī)磁盤空間不夠

因?yàn)槲锢頇C(jī)器上會(huì)混部多個(gè)服務(wù),每個(gè)服務(wù)都在往磁盤寫入數(shù)據(jù) 跨機(jī)房同步本身又比較慢 可能導(dǎo)致單機(jī)磁盤空間被打爆,磁盤被打爆后數(shù)據(jù)再也無法寫入了。

數(shù)據(jù)回環(huán)

Server A的數(shù)據(jù)被同步進(jìn)程A同步到B機(jī)房以后, 被寫入到數(shù)據(jù)流水B,然后同步進(jìn)程B又把這個(gè)流水同 步給了A機(jī)房,就這樣形成了一個(gè)循環(huán)回路浪費(fèi)了網(wǎng)絡(luò)帶寬和資源。