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