小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

作為通用架構(gòu)師,我是如何把控遷移技術(shù)方案的

 xujin3 2018-06-17

本文講解的方法論是一種通用的遷移方案,既適合字段遷移、表遷移、也適合庫(kù)遷移以及應(yīng)用遷移,既適合數(shù)據(jù)庫(kù)的遷移也適合緩存的遷移,雖然在細(xì)節(jié)上有些不同,但是在方法論上則大同小異,我們以分片后的數(shù)據(jù)容量不能滿足需求,需要對(duì)分片后的數(shù)據(jù)擴(kuò)容為例,這里的擴(kuò)容實(shí)際上是遷移的一種特殊案例,我們以擴(kuò)容為例來(lái)說(shuō)明相應(yīng)的步驟和實(shí)現(xiàn)細(xì)節(jié)。

1. 平滑遷移

平滑遷移適合對(duì)可用性要求較高的場(chǎng)景,例如,線上的交易服務(wù)對(duì)緩存或者數(shù)據(jù)庫(kù)依賴較大,不能忍受停機(jī)帶來(lái)的業(yè)務(wù)損失,也沒有交易的低峰期,我們對(duì)此只能采用平滑遷移的方式。

平滑遷移,是指將正在提供線上服務(wù)的數(shù)據(jù),從一個(gè)地方數(shù)據(jù)存儲(chǔ)到另一個(gè)數(shù)據(jù)存儲(chǔ),整個(gè)遷移過(guò)程中要求不停機(jī),服務(wù)不受影響。根據(jù)數(shù)據(jù)所處層次,可以分為緩存遷移、數(shù)據(jù)庫(kù)存儲(chǔ)遷移、應(yīng)用遷移等等;根據(jù)數(shù)據(jù)遷移前后的變化,又可以分為數(shù)據(jù)平移和數(shù)據(jù)轉(zhuǎn)移。數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)庫(kù)的遷移屬于平移,數(shù)據(jù)庫(kù)對(duì)其他Nosql庫(kù)的遷移屬于數(shù)據(jù)轉(zhuǎn)移。??數(shù)據(jù)平移是指遷移前后數(shù)據(jù)組織形式不變,比如Mysql數(shù)據(jù)庫(kù)從1個(gè)實(shí)例擴(kuò)展為4個(gè)實(shí)例,Redis緩存從2個(gè)實(shí)例擴(kuò)展到8個(gè)實(shí)例,等等。

如果在最初的設(shè)計(jì)里就為以后的擴(kuò)容做好準(zhǔn)備,也就是做了充分的容量評(píng)估,關(guān)于容量評(píng)估,請(qǐng)參考《分布式服務(wù)架構(gòu):原理、設(shè)計(jì)與實(shí)戰(zhàn)》的第3章的內(nèi)容,那么數(shù)據(jù)遷移工作就會(huì)簡(jiǎn)單很多,比如Mysql已經(jīng)做了分庫(kù)分表,擴(kuò)展實(shí)例的時(shí)候,只需要多做幾個(gè)從庫(kù),切換訪問(wèn)關(guān)系,最后將冗余的庫(kù)表刪除即可達(dá)到擴(kuò)容的效果,當(dāng)然,這需要短暫的停止服務(wù)。

近年來(lái)出現(xiàn)很多支持自動(dòng)可伸縮的數(shù)據(jù)庫(kù),在實(shí)現(xiàn)上已經(jīng)做到全自動(dòng)數(shù)據(jù)遷移,如HBase、TiDB等,那就更簡(jiǎn)單了,只要通過(guò)管理功能來(lái)添加機(jī)器,手工修改配置或者系統(tǒng)自動(dòng)發(fā)現(xiàn),就可完成數(shù)據(jù)庫(kù)容,也就免去了發(fā)雜的數(shù)據(jù)遷移等工作。??數(shù)據(jù)轉(zhuǎn)移是指在數(shù)據(jù)遷移前后,數(shù)據(jù)組織形式發(fā)生了變化。比如將Mysql數(shù)據(jù)庫(kù)遷移到HBase數(shù)據(jù)庫(kù),微博就經(jīng)歷過(guò)這樣的過(guò)程。

平滑遷移通常使用的是雙寫方案,方案分成4個(gè)步驟:雙寫、遷移歷史數(shù)據(jù)、切讀、下雙寫。

這種方式如果應(yīng)用與緩存擴(kuò)容的遷移的場(chǎng)景,則還有一個(gè)變種,就是不需要遷移舊數(shù)據(jù),在第1步中雙寫后,在一定的時(shí)間里通過(guò)新規(guī)則對(duì)新緩存進(jìn)行寫入,新緩存已經(jīng)有了足夠的數(shù)據(jù),這樣我們就不用再遷移舊數(shù)據(jù),直接進(jìn)入第3步即可。

首先,假設(shè)我們的應(yīng)用現(xiàn)在使用了具有兩個(gè)分片的數(shù)據(jù)集群,通過(guò)關(guān)鍵字哈希的方式進(jìn)行路由,如下圖所示。

因?yàn)閮蓚€(gè)分片已經(jīng)不能滿足容量的需求,所以現(xiàn)在需要擴(kuò)容到4個(gè)分片,達(dá)到原來(lái)兩倍的總大小,因此我們需要遷移。

遷移的具體過(guò)程如下。

1. 雙寫


按照新規(guī)則和舊規(guī)則同時(shí)往新新舊數(shù)據(jù)系統(tǒng)中寫數(shù)據(jù),如下圖所示。

2. 遷移歷史數(shù)據(jù)


把舊緩存集群中的歷史數(shù)據(jù)讀取出來(lái),按照新的規(guī)則寫到新的數(shù)據(jù)集群中,如下圖所示。

3. 切讀


把應(yīng)用層所有的讀操作路由到新的數(shù)據(jù)集群上,如下圖所示。

在這一步驟里,把應(yīng)用中讀取的操作的數(shù)據(jù)源轉(zhuǎn)換成新的數(shù)據(jù)集群,這是應(yīng)用的讀寫操作已經(jīng)完全發(fā)生在新的數(shù)據(jù)庫(kù)集群上了。這一步一般不需要上線代碼,我們會(huì)在一開始上雙寫時(shí)就實(shí)現(xiàn)開關(guān)邏輯,這里只需要將讀的開關(guān)切換到新的集群即可。

4. 下線雙寫


在這一步,我們把寫入舊的集群的邏輯下線,,如下圖所示。

閱讀全文請(qǐng)報(bào)名Gitchat的嘮嗑節(jié)目。




推薦一起學(xué)習(xí)《分布式服務(wù)架構(gòu):原理、設(shè)計(jì)與實(shí)戰(zhàn)》一書,它是一本不可多得的理論與實(shí)踐相結(jié)合的架構(gòu)秘籍,是作者多年工作經(jīng)驗(yàn)積累的結(jié)晶。京東購(gòu)買請(qǐng)掃描下方二維碼。



如果你想成為優(yōu)秀的架構(gòu)師

在【云時(shí)代架構(gòu)】精品群免費(fèi)進(jìn)!

我在【云時(shí)代架構(gòu)】技術(shù)社區(qū),你在哪里?

還等什么,趕快加入【云時(shí)代架構(gòu)】技術(shù)社區(qū)!

請(qǐng)猛掃下面二維碼。

云時(shí)代架構(gòu)

做互聯(lián)網(wǎng)時(shí)代最適合的架構(gòu)

開放、分享、協(xié)作

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多