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