本文作者戴維·高塞爾是微軟全球基礎(chǔ)設(shè)施服務(wù)數(shù)據(jù)中心架構(gòu)總監(jiān)。主要負(fù)責(zé)微軟的技術(shù)發(fā)展方向以及該企業(yè)全球數(shù)據(jù)中心綜合基礎(chǔ)設(shè)施架構(gòu)碳排量可靠性的整合。
傳統(tǒng)設(shè)備vs. 規(guī)模云計(jì)算
由于全球各地的人們越來越依賴于云服務(wù)來充分享受他們的數(shù)字化生活,盡管在物理故障時(shí)常發(fā)生的情況下,這也使得在線服務(wù)方面的需求的增加變得日益迫切。 正如我的同事戴維·比爾在本系列文章的第一部分所介紹的那樣,云服務(wù)提供商需要從傳統(tǒng)對于復(fù)雜的硬件冗余方案的過渡依賴,轉(zhuǎn)向于專注開發(fā)更多的智能軟件,以便可以監(jiān)控、預(yù)測,并有效地管理物理基礎(chǔ)設(shè)施的故障。當(dāng)服務(wù)可用性設(shè)計(jì)內(nèi)置于更具彈性的軟件時(shí),會有利于我們反思如何設(shè)計(jì)重大的物理數(shù)據(jù)中心。
直到2008年,像行業(yè)內(nèi)的諸多企業(yè)一樣,微軟也是遵循傳統(tǒng)企業(yè)的IT數(shù)據(jù)中心的設(shè)計(jì)和運(yùn)行方法,通過多級冗余來交付高度可用的硬件。這使得軟件開發(fā)人員必須依賴于硬件隨時(shí)都是可用的,或者動(dòng)態(tài)數(shù)據(jù)冗余副本僅僅被認(rèn)為是用于災(zāi)難恢復(fù)。而當(dāng)轉(zhuǎn)向通過依賴硬件的可用性之后,我們在軟件方面獲得了長足的發(fā)展。雖然我們在早期的模型中曾經(jīng)歷過某些硬件故障和人為錯(cuò)誤,但我們最終成功地交付了高度可用性的服務(wù)。然而,當(dāng)我們在我們稱之為“規(guī)模云計(jì)算”方面獲得顯著進(jìn)展時(shí),我們很快看到了,所需的投資水平和復(fù)雜程度是站不住腳的。我們也認(rèn)識到,這種軟件可能會比硬件導(dǎo)致更重大的服務(wù)中斷。
編寫代碼的可用性
我們今天所運(yùn)行云規(guī)模數(shù)據(jù)中心仍然需要大量的硬件,但軟件已經(jīng)成為數(shù)據(jù)中心服務(wù)可用性的主要驅(qū)動(dòng)因素。在某些情況下,其幫助我們顯著地減少了對于物理冗余的需求。通過解決軟件中的可用性程式,我們可以查看到物理環(huán)境的方方面面,從中央處理單元(CPU)到建筑本身。作為集成的系統(tǒng)同時(shí)又可以優(yōu)化各個(gè)方面的工作。
通過軟件開發(fā)工具和工作量的布局引擎,我們可以編寫一個(gè)數(shù)據(jù)中心的可用性的解決方案,比我們安裝物理冗余硬件要快得多。這種心態(tài)的轉(zhuǎn)變迅速創(chuàng)建了復(fù)合改進(jìn)可靠性、可擴(kuò)展性、效率和我們在云投資組合中發(fā)展的可持續(xù)性。
在我們的數(shù)據(jù)中心,我們已經(jīng)接受了這個(gè)事實(shí),即資金的缺乏將減少硬件故障或人為錯(cuò)誤。因?yàn)檫@樣的服務(wù)可用性的設(shè)計(jì)必須在軟件層。不管發(fā)生任何事,應(yīng)用程序或服務(wù)應(yīng)該很好的將故障轉(zhuǎn)移到另一個(gè)群集或數(shù)據(jù)中心,同時(shí)保證客戶的體驗(yàn)不受影響。這些故障預(yù)期將按照業(yè)務(wù)規(guī)則在一定的條件下操作,也就絕不會成為在凌晨兩點(diǎn)將公司的CIO電話吵醒的原因了。
這種方法使我們接受了要在我們的環(huán)境中進(jìn)行風(fēng)險(xiǎn)衡量,并刪除冗余的基礎(chǔ)設(shè)施的重要部分。2009年以來,我們開始提升數(shù)據(jù)中心的環(huán)境溫度,使得冷水機(jī)組成為了我們重要的設(shè)施之一,這帶來了用水量大巨大減少(平均只占到傳統(tǒng)數(shù)據(jù)中心用水量的1%)以及節(jié)能效果的顯著提升(平均節(jié)省了50%的能源)。同時(shí),自2009年以來,我們還在沒有使用備用發(fā)電機(jī)的情況下一直經(jīng)營數(shù)萬數(shù)千臺服務(wù)器,即使在發(fā)生停電中斷時(shí),也保證了數(shù)以萬計(jì)的用戶體驗(yàn)。通過優(yōu)化我們的應(yīng)用程序集群在物理世界中不相關(guān)的故障域的大小,我們已經(jīng)實(shí)現(xiàn)了一個(gè)小故障的拓?fù)浣Y(jié)構(gòu),使我們能夠區(qū)分故障并影響維護(hù)。