昨天科技圈最火的新聞應(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日织阅,杭州云棲大會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ù)存儲)只放在一個(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í)候我們就會考慮在另外一個(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ù)存儲,這個(gè)時(shí)候各個(gè)地方的應(yīng)用就不能同時(shí)對外提供寫入數(shù)據(jù)的服務(wù)了柿冲,因?yàn)楹苡锌赡軙霈F(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ù)會同步丽猬,所以就算主機(jī)房停電了,另外兩個(gè)機(jī)房還是可以臨時(shí)來對外提供服務(wù)的熏瞄。所以現(xiàn)在的架構(gòu)可以如下:
當(dāng)主機(jī)房停電后脚祟,用戶會去請求北京備份機(jī)房,當(dāng)北京備份機(jī)房也停電后强饮,用戶會去請求上海備份機(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ù)請求會不會出現(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ù)中心存儲完數(shù)據(jù)后就會直接返回結(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ù)中心存儲完數(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)了問題很泊,那么則會改為最大性能模式,這樣就保證了生產(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í),會同時(shí)向三個(gè)中心去寫數(shù)據(jù)妇穴,只要有兩個(gè)中心返回成功即可爬虱,這樣就算三個(gè)中心有一個(gè)中心停電了,那么并不影響整個(gè)架構(gòu)的高可用腾它,這個(gè)思路和我們前面三種是不一樣的跑筝,性能肯定會高很多。
好携狭,我們介紹了一下兩地三中心继蜡,總結(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ù)吧。