免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
上云不停服,自頂向下的平滑機(jī)房遷移方案!
當(dāng)年,我們是怎么平滑上云的?》介紹了上云的背景,以及三個(gè)重要結(jié)論:
(1)單機(jī)房架構(gòu)的核心是“全連接”;
(2)機(jī)房遷移方案的設(shè)計(jì)目標(biāo)是:平滑遷移,不停服務(wù);可以分批遷移;隨時(shí)可以回滾;
(3)想要平滑的實(shí)施機(jī)房遷移,臨時(shí)性的多機(jī)房架構(gòu)不可避免;

多機(jī)房多活架構(gòu),究竟怎么玩?》說(shuō)明了在機(jī)房遷移的過(guò)程中,一定有一個(gè)“多機(jī)房多活”的中間狀態(tài):
(1)理想多機(jī)房多活架構(gòu),是純粹的“同機(jī)房連接”,僅有異步數(shù)據(jù)同步會(huì)跨機(jī)房;
(2)理想多機(jī)房多活架構(gòu),會(huì)有較嚴(yán)重?cái)?shù)據(jù)一致性問(wèn)題,僅適用于具備數(shù)據(jù)聚集效應(yīng)的業(yè)務(wù)場(chǎng)景,例如:滴滴,快狗打車;
(3)偽多機(jī)房多活架構(gòu),思路是“最小化跨機(jī)房連接”,機(jī)房區(qū)分主次,落地性強(qiáng),對(duì)原有架構(gòu)沖擊較小,強(qiáng)烈推薦;

多機(jī)房多活,只是平滑上云的一個(gè)中間狀態(tài),那上云的步驟究竟是怎么樣的呢?

【5】核心問(wèn)題五,如何分批平滑上云?

如上圖,系統(tǒng)分層架構(gòu)包含:web,業(yè)務(wù)服務(wù),基礎(chǔ)服務(wù),緩存,數(shù)據(jù)庫(kù),它們都需要進(jìn)行遷移。

大的方向,有兩種方案:
(1)自底向上的遷移方案,從數(shù)據(jù)庫(kù)開始遷移;
(2)自頂向下的遷移方案,從web開始遷移;

這兩種方案我分別在58同城和58到家實(shí)踐過(guò),都是平滑的,螞蟻搬家式的,隨時(shí)可回滾,對(duì)業(yè)務(wù)無(wú)任何影響的,本文重點(diǎn)介紹“自頂向下”的方案。
畫外音:14-15年58同城“逐日”項(xiàng)目,2000臺(tái)物理機(jī)平滑遷移至天津機(jī)房,我是當(dāng)時(shí)項(xiàng)目總架構(gòu)師。

一、站點(diǎn)與服務(wù)遷移:無(wú)狀態(tài),遷移容易

站點(diǎn)和服務(wù)無(wú)狀態(tài),遷移起來(lái)并不困難。


步驟一,前置條件:
(1)新機(jī)房準(zhǔn)備就緒;
(2)專線準(zhǔn)備就緒;

步驟二,在新機(jī)房搭建好待遷移的子業(yè)務(wù),部署好web站點(diǎn),業(yè)務(wù)服務(wù),基礎(chǔ)服務(wù),做好充分的測(cè)試。

這里要重點(diǎn)說(shuō)明的是:
(1)垂直拆分遷移,每次遷移的范圍不要太大,劃分好子業(yè)務(wù)和子系統(tǒng);
(2)緩存和數(shù)據(jù)庫(kù)還未遷移,存在跨機(jī)房連接;
(3)新機(jī)房的配置文件注意“同連”,不要跨機(jī)房調(diào)用業(yè)務(wù)服務(wù)與基礎(chǔ)服務(wù);
畫外音,只要不切流量:
(1)依然老機(jī)房提供服務(wù);
(2)新機(jī)房隨便玩;

步驟三,灰度切流量,將被遷移的子業(yè)務(wù)切5%的流量到新機(jī)房,觀察新機(jī)房的站點(diǎn)與服務(wù)是否異常。如果沒(méi)有問(wèn)題,再10%,20%,50%,100%的逐步放量,直至某個(gè)子業(yè)務(wù)遷移完成。

第一個(gè)子業(yè)務(wù)的站點(diǎn)和服務(wù)遷移完之后,第二個(gè)子業(yè)務(wù)、第三個(gè)子業(yè)務(wù),螞蟻繼續(xù)搬家,直至所有的業(yè)務(wù)把站點(diǎn)和服務(wù)都全流量的遷移到新機(jī)房。

如何應(yīng)對(duì)異常?
在遷移過(guò)程中,任何一個(gè)子業(yè)務(wù),任何時(shí)間發(fā)生異常,可以將流量切回舊機(jī)房。舊機(jī)房的站點(diǎn)、服務(wù)、配置都沒(méi)有改動(dòng),依然能提供服務(wù)。

這是一個(gè)非常穩(wěn)的遷移方案。
 
二、緩存遷移:有狀態(tài),但數(shù)據(jù)可重建

站點(diǎn)和服務(wù)遷移完之后,接下來(lái)再遷緩存。


經(jīng)過(guò)第一步的遷移,如上圖:
(1)所有的入口流量都已經(jīng)遷到了新的機(jī)房;
(2)緩存和數(shù)據(jù)庫(kù),仍然使用舊機(jī)房;
畫外音:舊機(jī)房的站點(diǎn)和服務(wù)不能停,只要舊機(jī)房不停,就保留了切回流量回滾的可能性。

步驟四,在新機(jī)房搭建好緩存,緩存的規(guī)模和體量與舊機(jī)房一樣。

步驟五,按照子業(yè)務(wù)垂直逐步切換使用新機(jī)房的緩存,切換細(xì)節(jié)為:
(1)運(yùn)維做一個(gè)緩存內(nèi)網(wǎng)DNS的切換(內(nèi)網(wǎng)域名不變,IP切到新機(jī)房);
(2)殺掉原有緩存連接,業(yè)務(wù)線不需要做任何修改,只需要配合觀察服務(wù);
(3)緩存連接池會(huì)自動(dòng)重連,重連會(huì)自動(dòng)連接新機(jī)房的緩存;

bingo,一個(gè)子業(yè)務(wù)緩存遷移完畢。
 
這里要注意幾個(gè)點(diǎn):
(1)如果沒(méi)有使用內(nèi)網(wǎng)域名,而是采用IP直連緩存,則需要業(yè)務(wù)層配合,換新機(jī)房IP重啟;
畫外音:說(shuō)過(guò)無(wú)數(shù)次,一定要使用內(nèi)網(wǎng)域名。
(2)緩存遷移時(shí)間,盡量選在流量低峰期,新緩存是空數(shù)據(jù),如果選在流量高峰期,短時(shí)間內(nèi)可能會(huì)有大量請(qǐng)求透?jìng)鞯綌?shù)據(jù)庫(kù)上;
(3)對(duì)于同一個(gè)服務(wù),緩存的切換時(shí)瞬時(shí)的,不會(huì)同時(shí)使用新舊機(jī)房的緩存;
畫外音:否則容易出現(xiàn)一致性問(wèn)題。
 
緩存的遷移也是按照子業(yè)務(wù),垂直拆分,螞蟻搬家式遷移的。整個(gè)遷移過(guò)程除了運(yùn)維操作切內(nèi)網(wǎng)域名,研發(fā)和測(cè)試都只是配合觀察服務(wù),風(fēng)險(xiǎn)非常低。

緩存允許cache miss,不用轉(zhuǎn)移舊緩存內(nèi)的數(shù)據(jù),所以遷移方案比較簡(jiǎn)單。
 
三、數(shù)據(jù)庫(kù)遷移:有狀態(tài),數(shù)據(jù)也要遷移

站點(diǎn)層,服務(wù)層,緩存層都遷移完之后,最后是數(shù)據(jù)庫(kù)的遷移。

在遷移數(shù)據(jù)庫(kù)之前,服務(wù)通過(guò)專線跨機(jī)房連數(shù)據(jù)庫(kù)。

如何進(jìn)行數(shù)據(jù)庫(kù)遷移呢?
步驟六,先在新機(jī)房搭建新的數(shù)據(jù)庫(kù)。
畫外音:自建機(jī)房,需要自己搭建新的MySQL實(shí)例;到家直接使用阿里云的RDS。

步驟七,數(shù)據(jù)同步。自建機(jī)房可以使用數(shù)據(jù)庫(kù)MM/MS架構(gòu)同步數(shù)據(jù),阿里云可以使用DTS同步數(shù)據(jù)。
畫外音:DTS同步有一個(gè)大坑,只能通過(guò)公網(wǎng)同步非RDS的數(shù)據(jù),至少在16年是這樣,不知道現(xiàn)在產(chǎn)品升級(jí)了沒(méi)有。

數(shù)據(jù)庫(kù)同步完之后,如何進(jìn)行數(shù)據(jù)源切換呢?
能不能像緩存的遷移一樣,運(yùn)維修改一個(gè)數(shù)據(jù)庫(kù)內(nèi)網(wǎng)DNS指向,然后切斷數(shù)據(jù)庫(kù)連接,讓服務(wù)重連新的數(shù)據(jù)庫(kù)呢?這樣的話,業(yè)務(wù)服務(wù)不需要改動(dòng),也不需要重啟。

這個(gè)方式看上去很不錯(cuò),但是:
(1)一定得保證數(shù)據(jù)庫(kù)同步完成,才能切流量,但數(shù)據(jù)同步總是有遲延的,舊機(jī)房一直在不停的寫如數(shù)據(jù),何時(shí)才算同步完成?
(2)只有域名和端口不發(fā)生變化,才能不修改配置完成切換,但如果域名和端口(主要是端口)發(fā)生變化,是做不到不修改配置和重啟的。舉個(gè)例子,假設(shè)原有數(shù)據(jù)庫(kù)實(shí)例端口用了5858,而阿里云要求你使用3200,就必須改端口重啟。
 
步驟八,最終的方案是,DBA在舊機(jī)房的數(shù)據(jù)庫(kù)設(shè)置一個(gè)ReadOnly,停止數(shù)據(jù)的寫入,在秒級(jí)別,RDS同步完成之后,服務(wù)修改數(shù)據(jù)庫(kù)端口,重啟連接新機(jī)房的數(shù)據(jù)庫(kù),完成數(shù)據(jù)層的切換。

這個(gè)過(guò)程中,為了保證數(shù)據(jù)的一致性,會(huì)損失秒級(jí)別的寫入可用性。
 

經(jīng)過(guò)上述站點(diǎn)、服務(wù)、緩存、數(shù)據(jù)庫(kù)的遷移,平滑的螞蟻搬家式上云目標(biāo)就這么完成啦。
畫外音:幾百臺(tái)機(jī)器,幾千個(gè)集群,耗時(shí)一個(gè)季度。
 

自頂向下的機(jī)房遷移方案總結(jié)

一、先遷移站點(diǎn)層、業(yè)務(wù)服務(wù)層和基礎(chǔ)服務(wù)層

(1)準(zhǔn)備新機(jī)房與專線;

(2)搭建集群,充分測(cè)試,子業(yè)務(wù)垂直拆分遷移;

(3)灰度切流量;

二、緩存層遷移

(4)搭建新緩存;

(5)運(yùn)維修改緩存內(nèi)網(wǎng)DNS,切斷舊緩存連接,重連新緩存(這一步很騷),切流量;

三、數(shù)據(jù)庫(kù)遷移

(6)搭建新數(shù)據(jù)庫(kù);

(7)同步數(shù)據(jù);

(8)舊庫(kù)ReadOnly,同步完成后(秒級(jí)),服務(wù)指向新庫(kù),改配置重啟,切流量;


以上8大步驟,整個(gè)過(guò)程分批遷移,一個(gè)子業(yè)務(wù)一個(gè)子業(yè)務(wù)的遷移,一塊緩存一塊緩存的遷移,一個(gè)數(shù)據(jù)庫(kù)一個(gè)數(shù)據(jù)庫(kù)的遷移,任何步驟出現(xiàn)問(wèn)題都可以回滾的,整個(gè)過(guò)程不停服務(wù)。 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
精通手游運(yùn)維的架構(gòu)體系
云服務(wù)與視頻間的那些事
ES Redis MySQL,這個(gè)高可用架構(gòu)設(shè)計(jì)太頂了!
從西安一碼通崩潰,看千萬(wàn)級(jí)DAU系統(tǒng)該如何設(shè)計(jì)
數(shù)據(jù)庫(kù)主從不一致,怎么解?
「轉(zhuǎn)」炸!億級(jí)數(shù)據(jù)DB秒級(jí)平滑擴(kuò)容
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服