分布式緩存的遷移方案_第1頁(yè)
分布式緩存的遷移方案_第2頁(yè)
分布式緩存的遷移方案_第3頁(yè)
分布式緩存的遷移方案_第4頁(yè)
分布式緩存的遷移方案_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 分布式緩存的遷移方案 本文節(jié)選自即將出版的可伸縮服務(wù)架構(gòu):框架與中間件一書,作者:李艷鵬、楊彪、李海亮、賈博巖、劉淏。處理分布式緩存遷移是比較困難的,通常我們將其分為平滑遷移和停機(jī)遷移。這里講解通用的遷移方案,擴(kuò)容實(shí)際上是遷移的一種特殊案例,我們?cè)谙旅鎸W(xué)習(xí)的方案全部適用。我們會(huì)在講解該方案的過(guò)程中,以擴(kuò)容為例來(lái)說(shuō)明相應(yīng)的步驟和實(shí)現(xiàn)細(xì)節(jié)。平滑遷移平滑遷移適合對(duì)可用性要求較高的場(chǎng)景,例如,線上的交易服務(wù)對(duì)緩存依賴較大,不能忍受停機(jī)帶來(lái)的業(yè)務(wù)損失,也沒有交易的低峰期,我們對(duì)此只能采用平滑遷移的方式。平滑遷移使用的是雙寫方案,方案分成4個(gè)步驟:雙寫、遷移歷史數(shù)據(jù)、切讀、下雙寫。這種方式還有一個(gè)變種,

2、就是不需要遷移老數(shù)據(jù),在第1步中雙寫后,在一定的時(shí)間里通過(guò)新規(guī)則對(duì)新緩存進(jìn)行寫入,新緩存已經(jīng)有了足夠的數(shù)據(jù),這樣我們就不用再遷移舊數(shù)據(jù),直接進(jìn)入第3步即可。首先,假設(shè)我們的應(yīng)用現(xiàn)在使用了具有兩個(gè)分片的緩存集群,通過(guò)關(guān)鍵字哈希的方式進(jìn)行路由,如圖4-19所示。圖4-19因?yàn)閮蓚€(gè)分片已經(jīng)不能滿足緩存容量的需求,所以現(xiàn)在需要擴(kuò)容到4個(gè)分片,達(dá)到原來(lái)兩倍的緩存總大小,因此我們需要遷移。遷移的具體過(guò)程如下。第1步,雙寫。按照新規(guī)則和舊規(guī)則同時(shí)往新緩存和舊緩存中寫數(shù)據(jù),如圖4-20所示。圖4-20這里,我們?nèi)匀话凑张f的規(guī)則,也就是關(guān)鍵字哈希除以2取余來(lái)路由分片,同時(shí)按照新的規(guī)則,也就是關(guān)鍵字哈希除以4取余

3、來(lái)路由到新的4個(gè)分片上,來(lái)完成數(shù)據(jù)的雙寫。這個(gè)步驟有優(yōu)化的空間,因?yàn)槭窃诔杀稊U(kuò)容的場(chǎng)景下,所以我們不需要準(zhǔn)備4個(gè)全新的分片。新規(guī)則中前兩個(gè)分片的數(shù)據(jù),其實(shí)是舊規(guī)則中兩個(gè)分片數(shù)據(jù)的子集,并且規(guī)則一致,所以我們可以重用前兩個(gè)分片,也就是說(shuō)一共需要兩個(gè)新的分片,用來(lái)處理關(guān)鍵字哈希取余后為2和3的情況;使用舊的緩存分片來(lái)處理關(guān)鍵字哈希取余后0和1的情況即可。如圖4-21所示。圖4-21第2步,遷移歷史數(shù)據(jù)。把舊緩存集群中的歷史數(shù)據(jù)讀取出來(lái),按照新的規(guī)則寫到新的緩存集群中,如圖4-22所示。圖4-22在這個(gè)過(guò)程中,我們需要遷移歷史數(shù)據(jù),在遷移的過(guò)程中可能需要遷移工具,這也需要一部分開發(fā)工作量。在遷移后,

4、我們還需要對(duì)遷移的數(shù)據(jù)進(jìn)行驗(yàn)證,表明我們的數(shù)據(jù)遷移成功。在某些應(yīng)用場(chǎng)景下,緩存數(shù)據(jù)并不是應(yīng)用強(qiáng)依賴的,在緩存里獲取不到數(shù)據(jù),可以回源到數(shù)據(jù)庫(kù)獲取,因此在這種場(chǎng)景下通過(guò)容量評(píng)估,數(shù)據(jù)庫(kù)可以承受回源導(dǎo)致的壓力增加,就可以避免遷移舊數(shù)據(jù)。在另一種場(chǎng)景下,緩存數(shù)據(jù)一般是具有時(shí)效性的,應(yīng)用在雙寫期間不斷向新的集群中寫入新數(shù)據(jù),歷史數(shù)據(jù)會(huì)逐漸過(guò)時(shí),并被從舊的集群中刪除,在一定的時(shí)間流逝后,在新的集群中自然就有了最新的數(shù)據(jù),也就不再需要遷移歷史數(shù)據(jù)了,但是這需要進(jìn)行評(píng)估和驗(yàn)證。第3步,切讀。把應(yīng)用層所有的讀操作路由到新的緩存集群上,如圖4-23所示。圖4-23這一步把應(yīng)用中讀取的操作的緩存數(shù)據(jù)源轉(zhuǎn)換成新的緩

5、存集群,這時(shí)應(yīng)用的讀寫操作已經(jīng)完全發(fā)生在新的數(shù)據(jù)庫(kù)集群上了。這一步一般不需要上線代碼,我們會(huì)在一開始上雙寫時(shí)就實(shí)現(xiàn)開關(guān)邏輯,這里只需要將讀的開關(guān)切換到新的集群即可。第4步,下線雙寫。把寫入舊的集群的邏輯下線,如圖4-24所示。圖4-24這一步通常是在雙寫和切讀后驗(yàn)證沒有任何問(wèn)題,并保證數(shù)據(jù)一致性的情況下,才把這部分代碼下線的。同時(shí)可以把舊的分片下線,如果是擴(kuò)容的場(chǎng)景,并且重用了舊的分片1和分片2,則還可以清理分片1和分片2中的冗余數(shù)據(jù)。停機(jī)遷移停機(jī)遷移的方法比較簡(jiǎn)單,通常分為停止應(yīng)用、遷移歷史數(shù)據(jù)、更改應(yīng)用的數(shù)據(jù)源、啟動(dòng)應(yīng)用這4個(gè)步驟,如圖4-25所示。圖4-25具體的遷移步驟如下。(1)停機(jī)應(yīng)用,先將應(yīng)用停止服務(wù)。(2)遷移歷史數(shù)據(jù),按照新的規(guī)則把歷史數(shù)據(jù)遷移到新的緩存集群中。(3)更改應(yīng)用的數(shù)據(jù)源配置,指向新的緩存集群。(4)重新啟動(dòng)應(yīng)用。這種方式的好處是實(shí)現(xiàn)比較簡(jiǎn)單、高效,能夠有效避免數(shù)據(jù)的不一致,但是需要由業(yè)務(wù)方評(píng)估影響,一般在晚上交易量比較小或者非核心服務(wù)的場(chǎng)景下比較適用。-本文節(jié)選自即將出版的可伸縮服務(wù)架構(gòu):框架與中間件一書,此書現(xiàn)已開放預(yù)售,可登錄網(wǎng)址:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論