關(guān)于屏蔽舊客戶端的方案總結(jié)

分布式存儲(chǔ)中,我們常常需要處理這樣的場(chǎng)景:

  1. 客戶端A接入存儲(chǔ),并且開始讀寫。
  2. 客戶端A網(wǎng)絡(luò)斷開。
  3. 客戶端B接入存儲(chǔ),并且開始讀寫。

為了避免客戶端A/B并發(fā)讀寫造成的數(shù)據(jù)不一致,通常我們需要一些同步機(jī)制,比如:

  1. 存儲(chǔ)端采用raft等共識(shí)協(xié)議:性能可能比較差,客戶端規(guī)模大時(shí)會(huì)有問題。
  2. 存儲(chǔ)端對(duì)A/B進(jìn)行鎖授權(quán)。

方案2的問題在于,當(dāng)客戶端A離線后,如何在必要的時(shí)候,強(qiáng)制搶占A的鎖,并且讓A無法繼續(xù)訪問存儲(chǔ)(通常是在訪問的時(shí)候會(huì)報(bào)錯(cuò))。
如何讓A無法繼續(xù)訪問存儲(chǔ)呢?可以在通信層面使用版本號(hào)的機(jī)制讓客戶端無法再訪問服務(wù)端。也可以在業(yè)務(wù)上在客戶端B訪問的時(shí)候,先做一些『屏蔽』的動(dòng)作,完成這些『屏蔽』的動(dòng)作后,客戶端B再開始讀寫。我們保證這些『屏蔽』的動(dòng)作完成后,客戶端A就無法再訪問存儲(chǔ)了即可。具體『屏蔽』的動(dòng)作,由業(yè)務(wù)自己來設(shè)計(jì)。

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

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

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