昨天科技圈最火的新聞應(yīng)該是“AWS中國區(qū)光纜被挖向族,導(dǎo)致三星搀继、小米等眾多企業(yè)服務(wù)不可用”窘面。
又是光纜被挖,咦_辞财边?為什么是又,讓我們來一起回到過去:
- 2019.6.02:亞馬遜光纜被挖斷,國內(nèi)部分地區(qū)網(wǎng)絡(luò)出現(xiàn)異常
- 2019.3.23:施工隊(duì)挖斷騰訊光纖,致騰訊旗下100多款游戲受影響,損失大了
- 2015.5.27:由于杭州市蕭山區(qū)某地光纖被挖斷点骑,造成目前少部分用戶無法使用支付寶
我這里只是列出來了幾家大公司所涉及到的光纜被挖事故酣难,其余還包括什么廣電光纜被挖,社保局光纜被挖就不列了黑滴,感興趣的自己去百度憨募。
好,我們發(fā)現(xiàn)“公司再大袁辈,也怕施工隊(duì)”菜谣,那么這種事故能怪施工隊(duì)嗎?個(gè)人覺得不能把責(zé)任都推給施工隊(duì)晚缩,當(dāng)然我們這里不討論這些尾膊,我們做為大公司,我們以后怎么預(yù)防這種現(xiàn)象呢荞彼?
這個(gè)我們可以來看下支付寶的解決辦法眯停,畢竟它老人家在2015年就經(jīng)歷過這種慘況了。
2018年9月20日卿泽,杭州云棲大會(huì)ATEC主論壇現(xiàn)場上演了一場特別的技術(shù)秀。螞蟻金服副CTO胡喜現(xiàn)場模擬挖斷支付寶近一半服務(wù)器的光纜滋觉。結(jié)果只過了26秒签夭,模擬環(huán)境中的支付寶就完全恢復(fù)了正常。
這種解決辦法就是“三地五中心”椎侠,這是一種機(jī)房架構(gòu)第租,即在三座城市部署五個(gè)機(jī)房,一旦其中一個(gè)或兩個(gè)機(jī)房發(fā)生故障我纪,依靠技術(shù)可以將故障城市的流量全部切換到運(yùn)行正常的機(jī)房慎宾。
那么在“三地五中心”之前還存在很多其他架構(gòu)丐吓,我們一一來看一下他們的特點(diǎn)。
災(zāi)難演進(jìn)
最初趟据,我們把應(yīng)用(一個(gè)非常簡單的只讀應(yīng)用券犁,比如一個(gè)顯示Hello World的網(wǎng)頁,不考慮數(shù)據(jù)存儲(chǔ))只放在一個(gè)機(jī)器上汹碱,那么當(dāng)這個(gè)服務(wù)器down機(jī)了粘衬,我們的應(yīng)用便不可用了。
所以咳促,我們考慮把我們的應(yīng)用放在多個(gè)機(jī)器上稚新,在公司單獨(dú)開辟一個(gè)機(jī)房來放置這些機(jī)器,這樣單獨(dú)某一個(gè)臺機(jī)器down機(jī)了并不影響我們的應(yīng)用跪腹。
但是褂删,如果你們公司某一天停電了呢?這個(gè)時(shí)候我們就考慮在這座城市的另外一個(gè)地方在放置一個(gè)機(jī)房冲茸,這是應(yīng)用就被部署在了同城的兩個(gè)機(jī)房(這個(gè)叫同城雙活)
但是屯阀,如果你們城市某一天經(jīng)歷了海嘯、臺風(fēng)噪裕、地震等自然災(zāi)害蹲盘,兩個(gè)機(jī)房都不能使用了,這個(gè)時(shí)候我們就會(huì)考慮在另外一個(gè)城市再搭建一個(gè)機(jī)房來部署我們的應(yīng)用膳音,這樣我們應(yīng)用的可用性就更高了(這個(gè)叫異地多活)召衔。
好,到此為止不管出現(xiàn)什么樣的狀況祭陷,我們的應(yīng)用基本上都可用(除非地球毀滅...)
那么我們上面考慮的應(yīng)用是一個(gè)非常簡單的只讀應(yīng)用苍凛,所以各個(gè)地方的應(yīng)用是可以同時(shí)對外提供服務(wù)的,那么如果我們的應(yīng)用涉及到數(shù)據(jù)存儲(chǔ)兵志,這個(gè)時(shí)候各個(gè)地方的應(yīng)用就不能同時(shí)對外提供寫入數(shù)據(jù)的服務(wù)了醇蝴,因?yàn)楹苡锌赡軙?huì)出現(xiàn)數(shù)據(jù)沖突,那么我們暫且規(guī)定只有公司內(nèi)部機(jī)房里的服務(wù)器(后文我們叫主機(jī)房)可以提供寫數(shù)據(jù)服務(wù)想罕,而同城的另外一個(gè)機(jī)房以及異地的另外一個(gè)機(jī)房只能從主機(jī)房同步數(shù)據(jù)悠栓,這樣這兩個(gè)地方的機(jī)房的功能就叫災(zāi)備,因?yàn)閿?shù)據(jù)會(huì)同步按价,所以就算主機(jī)房停電了惭适,另外兩個(gè)機(jī)房還是可以臨時(shí)來對外提供服務(wù)的。所以現(xiàn)在的架構(gòu)可以如下:
當(dāng)主機(jī)房停電后楼镐,用戶會(huì)去請求北京備份機(jī)房癞志,當(dāng)北京備份機(jī)房也停電后,用戶會(huì)去請求上海備份機(jī)房框产。
好凄杯,對于這個(gè)架構(gòu)错洁,我們剛剛說只有主機(jī)房能對外提供服務(wù),另外兩個(gè)機(jī)房都只是作為容災(zāi)的備份戒突,那么也就是說備份機(jī)房利用率不高屯碴,因?yàn)楫吘拐U埱笙轮鳈C(jī)房不可能老停電,所以對于備份機(jī)房能不能提高它的利用率呢妖谴?當(dāng)然可以窿锉,我們可以讓北京的備份機(jī)房也去接收部分業(yè)務(wù)請求,只是這些請求可以沒那么重要膝舅,比如一些讀請求嗡载,而上海的備份機(jī)房不去接收請求,還是單純作為容災(zāi)備份機(jī)器仍稀,因?yàn)槿绻l都不能保證當(dāng)備份機(jī)房接收業(yè)務(wù)請求會(huì)不會(huì)出現(xiàn)其他不可預(yù)知的問題洼滚,那么現(xiàn)在三個(gè)機(jī)房的角色實(shí)際上已經(jīng)有些不同了:
這個(gè)就叫兩地三中心。
那么兩地三中心這種架構(gòu)是目前很多銀行或大型企業(yè)正在使用的一種架構(gòu)技潘,因?yàn)閲裔槍︺y行的災(zāi)備能力做過要求遥巴,資產(chǎn)超過多少多少的一定要做兩地三中心架構(gòu),以保證銀行系統(tǒng)的穩(wěn)定享幽。
那么這種架構(gòu)有沒有它的缺點(diǎn)呢铲掐?我們來考慮一下它的可用性高不高?可用性的意思就是這個(gè)架構(gòu)處理用戶請求時(shí)夠不夠快值桩?
我們發(fā)現(xiàn)這種架構(gòu)摆霉,中心之間是需要數(shù)據(jù)備份的,那么對于數(shù)據(jù)備份只有兩種方式奔坟,要么異步携栋,要么同步。
- 最大性能模式:如果是異步咳秉,表示用戶一個(gè)寫數(shù)據(jù)請求婉支,只要在生產(chǎn)數(shù)據(jù)中心存儲(chǔ)完數(shù)據(jù)后就會(huì)直接返回結(jié)果給用戶,同時(shí)異步去備份數(shù)據(jù)澜建,但是向挖,如果正準(zhǔn)備去異步備份數(shù)據(jù)的時(shí)候生產(chǎn)數(shù)據(jù)中心停電了~,那么這個(gè)時(shí)候還能將災(zāi)備服務(wù)器暴露出去給用戶提供服務(wù)嗎炕舵?不能了户誓,因?yàn)楹苡锌赡転?zāi)備中心的數(shù)據(jù)是過時(shí)的數(shù)據(jù)。
- 最大保護(hù)模式:如果是同步幕侠,表示用戶一個(gè)寫數(shù)據(jù)請求,不僅要等待生產(chǎn)數(shù)據(jù)中心存儲(chǔ)完數(shù)據(jù)碍彭,還需要等其他災(zāi)備中心備份完數(shù)據(jù)后才能返回晤硕,而且僅僅當(dāng)災(zāi)備中心出現(xiàn)問題時(shí)悼潭,因?yàn)椴荒芡瓿蓴?shù)據(jù)的備份,所以整個(gè)架構(gòu)也不能對外提供服務(wù)舞箍,這種可用性是很低的舰褪。
- 最大可用模式:這是普遍采用的方案,正常情況下使用最大保護(hù)模式疏橄,同時(shí)生產(chǎn)數(shù)據(jù)中心監(jiān)控災(zāi)備數(shù)據(jù)中心占拍,一旦發(fā)現(xiàn)某一災(zāi)備中心出現(xiàn)了問題,那么則會(huì)改為最大性能模式捎迫,這樣就保證了生產(chǎn)數(shù)據(jù)中心不受其他災(zāi)備中心影響晃酒。
- 三寫兩同步:這是阿里之前的架構(gòu)模式,意思是同城三個(gè)中心窄绒,數(shù)據(jù)備份不是發(fā)生在數(shù)據(jù)庫層面贝次,而是應(yīng)用層,當(dāng)應(yīng)用向數(shù)據(jù)庫去寫數(shù)據(jù)時(shí)彰导,會(huì)同時(shí)向三個(gè)中心去寫數(shù)據(jù)蛔翅,只要有兩個(gè)中心返回成功即可,這樣就算三個(gè)中心有一個(gè)中心停電了位谋,那么并不影響整個(gè)架構(gòu)的高可用山析,這個(gè)思路和我們前面三種是不一樣的,性能肯定會(huì)高很多掏父。
好笋轨,我們介紹了一下兩地三中心,總結(jié)一下它的缺點(diǎn):
- 災(zāi)備中心利用率不高
- 生產(chǎn)數(shù)據(jù)中心停止運(yùn)行后损同,災(zāi)備中心中不一定有100%一模一樣的數(shù)據(jù)
- 成本高翩腐,但又無法真正實(shí)現(xiàn)期望的高可用能力
那么為了解決這個(gè)問題,就出現(xiàn)了三地五中心膏燃,雖然名字和兩地三中心類似茂卦,但提供的功能完全不同。
三地五中心是指三個(gè)城市组哩,5個(gè)中心等龙,三地五中心基于的概念是單元化,還得花很大篇幅來講伶贰,下一篇繼續(xù)吧蛛砰。
相信大家不喜歡在小小的手機(jī)屏幕上還看到一大塊的代碼,閱讀體驗(yàn)不好黍衙,所以我寫作的風(fēng)格會(huì)文字偏多一點(diǎn)泥畅。如果覺得有所收獲就給個(gè)小小的贊吧。