正如企事業(yè)單位盛產(chǎn)“臨時(shí)工”一樣,IT行業(yè)也有大量的背鍋俠,遠(yuǎn)有挖掘機(jī)近有程序員,而隨著云計(jì)算服務(wù)的興起,云計(jì)算廠商大有成為新一代背鍋俠的趨勢——因?yàn)楹芏喾?wù)跑在云上,不管這些服務(wù)為啥掛了,都可以說是云計(jì)算廠商導(dǎo)致的。
粗略地看,這鍋還真是云計(jì)算廠商背定了。遠(yuǎn)的如AWS宕機(jī)、Azure宕機(jī),近的有Google宕機(jī),國內(nèi)也有阿里云、騰訊云、青云等的宕機(jī)事故。云計(jì)算廠商宕機(jī)之后,他們服務(wù)的客戶肯定也癱瘓。
不過,也有一些服務(wù)幸免于難,其原因很簡單——自己做了災(zāi)備。從系統(tǒng)性角度來看,云計(jì)算是一個(gè)很顯而易見的責(zé)任方,但如果做到了服務(wù)的高可用還真的可以無視云計(jì)算宕機(jī),關(guān)鍵在于頂層設(shè)計(jì)。
IT黑天鵝事件不可避免
云計(jì)算成了當(dāng)今互聯(lián)網(wǎng)服務(wù)的核心基礎(chǔ)。云計(jì)算服務(wù)商在談?wù)摲?wù)時(shí)總喜歡強(qiáng)調(diào)有多少個(gè)9的可用性,無論是云服務(wù)器、數(shù)據(jù)庫還是存儲(chǔ)。這不是云計(jì)算行業(yè)的獨(dú)特發(fā)明,面向企業(yè)級(jí)客戶的產(chǎn)品和服務(wù),第一賣點(diǎn)永遠(yuǎn)是穩(wěn)定可靠,9的個(gè)數(shù)是某種定量化的表征,換一種更專業(yè)的說法叫SLA。
不過,SLA并非萬無一失的保險(xiǎn)柜,這個(gè)世界上,小概率事件永遠(yuǎn)會(huì)發(fā)生,有個(gè)規(guī)律叫“墨菲定律”,大意是你想到的最壞的事情它總會(huì)發(fā)生——龐大而復(fù)雜的IT環(huán)境,加上各種天災(zāi)人禍,出問題幾乎無法避免。
云計(jì)算高可用+應(yīng)用高可用=服務(wù)高可用
那么,一個(gè)非?,F(xiàn)實(shí)又容易被忽略的問題來了:如何保證在云服務(wù)不可用的情況下,用戶的應(yīng)用架構(gòu)仍然能夠屹立不倒?
能夠提出這一問題的云計(jì)算用戶并不多,因?yàn)榻^大多數(shù)人把云平臺(tái)的可用性等同于自身業(yè)務(wù)架構(gòu)的可用性,事實(shí)上這是兩件事。
出事了別把責(zé)任全推給云廠商,也要看看自己。某種程度上,你得做好即便云計(jì)算廠商掛了,你都不會(huì)掛。因?yàn)檫@是你對你自己客戶的承諾。承諾不能轉(zhuǎn)嫁別人。
2012年堪稱亞馬遜AWS的厄運(yùn)之年,6、7兩個(gè)月連續(xù)宕機(jī)影響一大票用戶,其中不乏Netflix、Heroku、Pinterest這樣的明星公司。那時(shí)候,輿論不光對亞馬遜AWS大加討伐,對云服務(wù)的前景也幾乎失去了信心。
但也有清醒的聲音。美國知名電腦周刊雜志eWeek 就發(fā)表資深科技記者M(jìn)ike Elgan評(píng)論文章說“云計(jì)算不是萬靈丹,我們不過是租別人的計(jì)算機(jī)而已。因此自己數(shù)據(jù)中心可能出現(xiàn)的問題就算是轉(zhuǎn)向了云計(jì)算也依然存在”,他建議“企業(yè)有自己的替代方案很重要”。
Netflix的技術(shù)人員就表示,不論在何種情況下,每個(gè)系統(tǒng)必須靠自己存活。他們在設(shè)計(jì)系統(tǒng)時(shí)考慮了其所依賴的其他系統(tǒng)的故障并且能夠容忍故障。
災(zāi)備還有同城災(zāi)備、異地災(zāi)備以及多活
自己掌握主動(dòng)權(quán),自己掌握主動(dòng)權(quán),自己掌握主動(dòng)權(quán),重要的事情說三遍。
解決可用性問題,很容易想到的是災(zāi)備:從兩地三中心到同城雙活到異地多活,金融機(jī)構(gòu)、政府、大中型企業(yè)一直秉持“不把雞蛋放在一個(gè)籃子里”的思路,在災(zāi)備的路上越走越高精尖。
但是高精尖的背后是高昂的成本,對中小企業(yè)而言有些負(fù)擔(dān)過重。事實(shí)上,在云計(jì)算上也有對應(yīng)的服務(wù):地域(Region)和可用區(qū)(AZ:Availabe Zone)。
地域就是物理意義上不同地方的機(jī)房,一般來說距離較遠(yuǎn),相對來說會(huì)在用戶需求量較大的地方部署地域機(jī)房;每個(gè)地域又被劃分成多個(gè)可用區(qū)??捎脜^(qū)就好比資源池,它由一組物理和邏輯資源組成。
所以對于自己的云端業(yè)務(wù),既可以分散到多個(gè)可用區(qū),也可分散到多個(gè)地域。建立在不同地域上的業(yè)務(wù)架構(gòu)可用性高于可用區(qū),但復(fù)雜度和成本也高,所以平衡很重要。
應(yīng)用高可用可做的文章更多
除此之外,互聯(lián)網(wǎng)界對于系統(tǒng)如何達(dá)到高可用是有一些基本共識(shí)的,比如:大系統(tǒng)小做,服務(wù)拆分;并發(fā)控制,服務(wù)隔離;灰度發(fā)布;全方位監(jiān)控報(bào)警;核心服務(wù),平滑降級(jí)。這些最佳實(shí)踐,如果很好地落實(shí),對于提高系統(tǒng)可用性非常有幫助。
這里面每一個(gè)領(lǐng)域都可以單獨(dú)做文章,這里想特別提一個(gè)概念:分布式。分布式是互聯(lián)網(wǎng)界的熱詞,雖然說得多,但真正理解的人少。
分布式通過一套協(xié)議,將多臺(tái)機(jī)器連接在一起,減少了中心計(jì)算節(jié)點(diǎn),從而完成計(jì)算。增加了網(wǎng)絡(luò),減少了共享,這為分布式系統(tǒng)帶來了一些新的優(yōu)點(diǎn),比如高可用。
能夠做到高可用的原因其實(shí)很簡單,因?yàn)榉植际较到y(tǒng)是通過網(wǎng)絡(luò)將大量計(jì)算機(jī)連接在一起來完成功能的,而每一臺(tái)參與到網(wǎng)絡(luò)內(nèi)的計(jì)算機(jī),都是一臺(tái)全功能的計(jì)算機(jī)。因此,哪怕網(wǎng)絡(luò)內(nèi)只存在著一臺(tái)計(jì)算機(jī),從理論上來說,它也能完成全部計(jì)算,只是速度會(huì)稍微有一點(diǎn)影響。
分布式的思想引領(lǐng)了互聯(lián)網(wǎng)的發(fā)展,也讓高可用不再昂貴得遙不可及。
業(yè)內(nèi)越來越清晰地認(rèn)識(shí)到云計(jì)算是一門信任生意,可以說云計(jì)算是在金融之后更大的信任商業(yè)。只是,企業(yè)把IT基礎(chǔ)設(shè)施托付給云服務(wù)商的時(shí)候,千萬別忘了你才是這些系統(tǒng)的主人。