作為微軟首席執(zhí)行官,薩蒂亞·納德拉可能還是位初來乍到的新人,但他對于該公司的關(guān)鍵性內(nèi)部工具以及與Amazon及谷歌開展競爭的方案早已非常熟稔:這正是名為Autopilot的一款復(fù)雜度極高的軟件系統(tǒng)。
Autopilot是一款幫助微軟將數(shù)百萬臺服務(wù)器以及上萬PB海量數(shù)據(jù)融合成一整套龐大強勁計算及存儲資源池的工具。如果沒有Autopilot,納德拉之前所領(lǐng)導(dǎo)的服務(wù)器與工具、在線服務(wù)、搜索與廣告乃至云與企業(yè)部門都將變得一塌糊涂、完全沒有可靠性可言。
談到使用Autopilot的感受,Windows Azure業(yè)務(wù)總經(jīng)理Mike Neil在接受我們采訪時表示,就像手握著“一輛價值數(shù)十億美元的超級豪車的鑰匙。”
微軟很少在公開場合談?wù)揂utopilot,而且迄今為止也只在兩份官方文件中談到過這款工具:一份發(fā)布于2007年、如今早已過時的文章,題為《Autopilot:自動化數(shù)據(jù)中心管理》;另一個則是2013年發(fā)布的網(wǎng)頁,其中解釋了Autopilot的開發(fā)團隊如何憑借在這套系統(tǒng)研發(fā)工作中的不懈努力贏得“杰出技術(shù)成就”獎。
Autopilot之所以一直保持籠罩著神秘的面紗,部分原因在于直到現(xiàn)在、微軟營銷部門仍宣稱它用于運行云環(huán)境的全部組件都能為公眾所直接購買。
對于熟悉分布式系統(tǒng)的行家們來說,大型IT設(shè)施的特殊性質(zhì)以及復(fù)雜的相關(guān)要求絕不是輕易就能搞定的,因此微軟的這種說辭始終難以令人信服。不過如今我們終于揭開了正確答案:沒錯,微軟確實在內(nèi)部使用了大量自有商用軟件來運行云環(huán)境,但“絕大多數(shù)”運行在微軟數(shù)據(jù)中心內(nèi)的應(yīng)用程序最終都要以Autopilot系統(tǒng)為基礎(chǔ)。
“Autopilot軟件現(xiàn)在已經(jīng)徹底實現(xiàn)了整個服務(wù)器運行周期的自動化目標(biāo),從啟動、操作系統(tǒng)安裝到故障檢測與修復(fù),再到反復(fù)啟動與供應(yīng)商不良產(chǎn)品退返,”微軟方面解釋道,“Autopilot技術(shù)小組已經(jīng)可以順利謝幕,因為他們打造的方案正通過悄無聲息的運轉(zhuǎn)給微軟在互聯(lián)網(wǎng)規(guī)模服務(wù)的轉(zhuǎn)型帶來深遠影響與有力支持。”
它同時也有助于為應(yīng)用程序分配資源、在作業(yè)運行時設(shè)定進程規(guī)劃、從數(shù)百萬臺計算設(shè)備中收集信息并在最多一分鐘之內(nèi)給出經(jīng)過優(yōu)化的可利用信息,而且也成為了其它更為神秘的先進技術(shù)的組成部分——例如艾字節(jié)級別COSMOS數(shù)據(jù)分析引擎,我們所熟知的Bing、Xbox Live以及Windows Azure都建立在這套引擎的基礎(chǔ)之上。
最后,Autopilot已經(jīng)與經(jīng)過重新設(shè)計的微軟數(shù)據(jù)中心硬件緊密契合在一起,這標(biāo)志著微軟已經(jīng)不再從傳統(tǒng)供應(yīng)商手中購買高端設(shè)備、轉(zhuǎn)而自行設(shè)計商用型廉價服務(wù)器——這些計算設(shè)備的構(gòu)成方式已經(jīng)隨著今年一月微軟加入Facebook開放計算項目而公諸天下。
換句話來說,如果微軟的服務(wù)器是提線木偶,那么Autopilot就是幕后那只看不見的操縱之手以及構(gòu)建木偶表演舞臺的關(guān)鍵性角色。
Neil將Autopilot比作了波音747客機:“它龐大、復(fù)雜而且轟隆作響”。根據(jù)他的解釋,這套系統(tǒng)的設(shè)計目的在于“將工作負載從飛行員(也就是數(shù)據(jù)中心系統(tǒng)管理員)肩上卸下來,從而讓這些優(yōu)秀人才能把精力集中在其它更重要的事情身上。”
Autopilot的關(guān)鍵性任務(wù)之一就是處理底層基礎(chǔ)設(shè)施的配置工作。
當(dāng)微軟希望為其遍布全球的“十到一百”家數(shù)據(jù)中心添加容量資源時,他們通常會在一個集裝箱里塞進約上萬個計算節(jié)點——用微軟方面的說法這叫作“ITPAC”。一旦這些設(shè)備與數(shù)據(jù)中心的電網(wǎng)接駁完畢,Autopilot就開始檢查所有新服務(wù)器是否經(jīng)過正確配置、相關(guān)網(wǎng)絡(luò)是否工作良好,同時幫助將它們與系統(tǒng)中的其它部分進行對接。
“Autopilot不僅為主機部署并管理操作系統(tǒng)鏡像,同時也負責(zé)管理已經(jīng)部署完成的應(yīng)用程序,”Neil解釋稱,“這套代理機制與操作系統(tǒng)鏡像如影隨行,而且也是我們SDN解決方案的組成部分。SDN解決方案同時管理著東西與南北流量,我們的拓樸結(jié)構(gòu)則帶來了相當(dāng)充裕的網(wǎng)絡(luò)帶寬以及路徑冗余。”
就算這些服務(wù)器已經(jīng)被納入微軟遍布全球的“超過百萬臺服務(wù)器”網(wǎng)絡(luò),Autopilot仍然能夠出力輔助對其進行管理。
如果某臺服務(wù)器發(fā)生故障,Autopilot所具備的“自我修復(fù)”功能可以預(yù)防集群規(guī)模下的批量癱瘓,他指出,“設(shè)備故障狀況時有發(fā)生——Autopilot能夠采取整治行動,從而幫我們解決這些疑難雜癥。這套系統(tǒng)擁有大量自動修復(fù)操作規(guī)程,我們根本不用操心那些沒啥技術(shù)含量的雞毛小事。”
Autopilot還擁有一套極為精巧的調(diào)度組件,再用航空領(lǐng)域的例子來打比方,它能像空中交通管制員那樣打理微軟全球計算設(shè)備池內(nèi)不計其數(shù)、大大小小的各類工作負載。
雜技、木偶、轉(zhuǎn)盤演員與監(jiān)督者
調(diào)度工作意味著系統(tǒng)必須以雜質(zhì)般的精準(zhǔn)手法處理不同類型的應(yīng)用程序,這樣才能為第一層應(yīng)用程序提供可靠的性能保證——例如面向付費客戶的Azure工作負載——同時“壓縮”低優(yōu)先級工作負載(例如面向微軟內(nèi)部項目的批處理作業(yè))所占用的資源容量。
“如果大家把操作系統(tǒng)看成是一臺計算機的話,那就相當(dāng)于選擇了搶占式調(diào)度方案——即在環(huán)境中同時運行多個應(yīng)用程序以及時間片,”Neil解釋道,“在這方面,我們正在努力搞定裝箱問題——這是個非常經(jīng)典的難題,要找到最佳答案可不簡單、而且對網(wǎng)絡(luò)處理器來說負擔(dān)也很重。”
Neil無法就Autopilot調(diào)度機制的具體特點提供進一步信息,不過最近由微軟研究院發(fā)布的一篇學(xué)術(shù)論文指出,該公司正計劃以自動方式進一步提升工作負載壓縮流程、從而有效實現(xiàn)作業(yè)安排。(另有證據(jù)表明,微軟內(nèi)部規(guī)模達數(shù)EB級別的‘COSMOS’存儲采用的是一種名為‘SCOPE’的腳本語言,旨在處理特定的分析類調(diào)度任務(wù)。)
這種調(diào)度組件的存在意味著Autopilot除了扮演木偶操縱者之外,同時也身兼轉(zhuǎn)盤演員角色。
集裝箱中的服務(wù)器們在被運抵微軟數(shù)據(jù)中心之后,最先遇見的軟件就將是Autopilot
而且與谷歌(即Borg及其繼任者Omega)以及Twitter(Mesos)所使用的系統(tǒng)類似,Autopilot的復(fù)雜程度使其更像是一位技術(shù)嫻熟但卻不善溝通的同事、而不僅僅是套實用的管理系統(tǒng)。
“我們必須學(xué)會習(xí)慣的是,要適應(yīng)放棄對這套系統(tǒng)的全面控制并允許它作出正確的判斷與操作,一定得信任它——它可能會采取一些我們自己并不了解的處理步驟,”Neil指出,“這些系統(tǒng)規(guī)模如此龐大,以至于沒人能對其進行全面追蹤。而這也正是該系統(tǒng)的設(shè)計目的——處理一切細節(jié)事務(wù)。”
Autopilot還會收集大量數(shù)據(jù),從而幫助微軟對自己的基礎(chǔ)設(shè)施加以分析并由此定位問題。
“我們掌握著全部與處理器負載以及內(nèi)存負載有關(guān)的信息,”Neil解釋稱,“人們往往容易忽略這樣一種普遍狀況,即我們所擁有的物理設(shè)備是存在容量極限的,第一時間掌握資源剩余情況非常非常重要。可能大家使用的某款應(yīng)用程序會導(dǎo)致內(nèi)存耗盡,及時發(fā)現(xiàn)這種情況有助于我們對關(guān)鍵性組件進行優(yōu)化。”
盡管該服務(wù)中包含關(guān)于CPU、內(nèi)存、網(wǎng)絡(luò)以及磁盤使用情況等多種指標(biāo),但Neil表示“我們通過實踐經(jīng)驗了解到,通過不間斷監(jiān)控所獲得的終端到終端測試結(jié)果往往更加有效。舉例來說,我們可以發(fā)出一條搜索查詢、驗證能否得到有效結(jié)果,并比對結(jié)果的實際返回時間與我們的預(yù)期范圍是否相符。我們把這樣的工作內(nèi)容稱為監(jiān)督者。不同的結(jié)果能夠觸發(fā)自動修復(fù)或者讓我們回滾到原先曾經(jīng)部署過的早期版本。”
從這個角度來說,Autopilot擁有了與谷歌系統(tǒng)截然不同的特性。相比之下,后者利用一項名為CPI2的先進技術(shù)收集更多細節(jié)指標(biāo),并借此幫助谷歌定位運行在單一處理器上的單一任務(wù)所遭遇的性能問題,并有選擇性地加以解決。
Autopilot的強大實力為微軟帶來了顯著收益,因為它有效提高了該公司在駕馭其價值數(shù)十億美元的計算設(shè)備時所表現(xiàn)出的工作效率。隨著微軟公司在云計算大師納德拉的帶領(lǐng)下逐步向“設(shè)備與服務(wù)”企業(yè)轉(zhuǎn)型,Autopilot的重要性只會隨著時間的推移外加微軟沖擊廣闊數(shù)字化世界而愈發(fā)得到凸顯。有了Autopilot,Neil認為微軟相當(dāng)于擁有了“足以應(yīng)對這個全新云世界的操作系統(tǒng)。”
可以肯定,納德拉也抱有同樣的期望。