“工欲善其事,必先利其器”——需要支撐超大規(guī)模的網(wǎng)絡(luò)應(yīng)用,超大規(guī)模的全球基礎(chǔ)設(shè)施是必不可少的。所以我們先看Yahoo!數(shù)據(jù)中心和全球的骨干網(wǎng)絡(luò)有哪些特別的設(shè)計(jì)和考慮,來(lái)幫支撐超大規(guī)模的互聯(lián)網(wǎng)應(yīng)用。
首先通過(guò)兩張圖片(圖1)來(lái)了解Yahoo!數(shù)據(jù)中心。我們的數(shù)據(jù)中心大多是自主設(shè)計(jì)和建造的,尤其在北美地區(qū),我們自主設(shè)計(jì)并建造了三個(gè)超大規(guī)模的數(shù)據(jù)中心。這三個(gè)數(shù)據(jù)中心初期設(shè)計(jì)的容量均為20兆瓦,大概可容納25000到30000臺(tái)服務(wù)器及相應(yīng)網(wǎng)絡(luò)設(shè)備,并均有能力通過(guò)后續(xù)容量擴(kuò)展至50兆瓦以上。
如果有參觀過(guò)國(guó)內(nèi)數(shù)據(jù)中心,或者有數(shù)據(jù)中心建設(shè)經(jīng)驗(yàn)的同學(xué)可能會(huì)有所了解。影響數(shù)據(jù)中心建設(shè)的最主要因素往往不是網(wǎng)絡(luò)帶寬,而是電力和制冷。所以,雅虎通過(guò)近20年的經(jīng)驗(yàn)積累,在這兩方面沉淀了大量的專利技術(shù)以提高數(shù)據(jù)中心的密集度。我們自行設(shè)計(jì)機(jī)架及其電源模塊以保證所有機(jī)架都能滿負(fù)荷工作,同時(shí)實(shí)現(xiàn)所有電源的遠(yuǎn)程網(wǎng)絡(luò)控制,這樣可以有效的提升可維護(hù)性,降低現(xiàn)場(chǎng)工程師的工作負(fù)擔(dān)。滿架的服務(wù)器機(jī)架還有另一個(gè)好處:所有的服務(wù)器都是前吸冷風(fēng),后排熱風(fēng),我們將服務(wù)器機(jī)架相對(duì)排列(面對(duì)面,背對(duì)背),這樣就可以實(shí)現(xiàn)冷熱風(fēng)道的隔離,甚至完全密封熱風(fēng)通道,促使冷空氣在均勻通過(guò)所有服務(wù)器散熱后,由熱風(fēng)通道排出。這樣不僅降低了制冷面積,還提升了散熱效率。通過(guò)建設(shè)超大規(guī)模的數(shù)據(jù)中心,我們不僅增加了數(shù)據(jù)中心的密集度,提升了單個(gè)數(shù)據(jù)中心的計(jì)算能力,滿足了日益增長(zhǎng)的超大規(guī)模應(yīng)用需求,同時(shí)還能提升數(shù)據(jù)中心現(xiàn)場(chǎng)工程師的管理效率,降低維護(hù)成本。此外,我們也不斷聚焦新技術(shù)的采用以降低能源消耗。我們數(shù)據(jù)中心通過(guò)精心的設(shè)計(jì),實(shí)現(xiàn)PUE(能源使用效率=總體能源消耗/IT設(shè)備能源消耗,越接近1代表能源效率越高)僅為1.08的業(yè)界領(lǐng)先水平。
除了數(shù)據(jù)中心是我們自行設(shè)計(jì)并建造的,我們?nèi)虻墓歉删W(wǎng)絡(luò)也是自主設(shè)計(jì)。我們通過(guò)自行鋪設(shè)光纜或租用運(yùn)營(yíng)商網(wǎng)絡(luò),構(gòu)建了自己的Yahoo!全球骨干網(wǎng)。所有的網(wǎng)絡(luò)設(shè)備都由我們的網(wǎng)絡(luò)運(yùn)維團(tuán)隊(duì)管理,核心網(wǎng)絡(luò)均是多鏈路冗余,實(shí)現(xiàn)單點(diǎn)網(wǎng)絡(luò)故障的自動(dòng)轉(zhuǎn)移,而不依賴網(wǎng)絡(luò)運(yùn)營(yíng)商提供的SLA.
圖2全球骨干網(wǎng)絡(luò)示意圖(不代表Yahoo!全球骨干網(wǎng)絡(luò)設(shè)計(jì))
我們的全球骨干網(wǎng)絡(luò)均為高帶寬互聯(lián),區(qū)域內(nèi)我們提供10Gbps-40Gbps乃至北美地區(qū)的200Gbps互聯(lián)帶寬,洲際間也提供20Gbps的多鏈路冗余。骨干網(wǎng)絡(luò)主要是傳輸雅虎內(nèi)部數(shù)據(jù),分發(fā)應(yīng)用所需的數(shù)據(jù)到全球所有數(shù)據(jù)中心,收集全球用戶訪問(wèn)數(shù)據(jù)到后端計(jì)算網(wǎng)格進(jìn)行匯總和計(jì)算。
Yahoo!全球骨干網(wǎng)絡(luò)除了與傳統(tǒng)運(yùn)營(yíng)商網(wǎng)絡(luò)互聯(lián)互通,以方便最終用戶能通過(guò)其運(yùn)營(yíng)商網(wǎng)絡(luò)快速接入雅虎的各項(xiàng)服務(wù),同時(shí)我們還與其他的大型互聯(lián)網(wǎng)公司有交換網(wǎng)絡(luò)連接,這樣我們與其他大型互聯(lián)網(wǎng)公司間的數(shù)據(jù)交換(如郵件數(shù)據(jù)交換)即可通過(guò)我們的交換網(wǎng)絡(luò)傳輸,不再依賴于運(yùn)營(yíng)商網(wǎng)絡(luò)。這樣不僅提高了交換能力,更大范圍降低對(duì)網(wǎng)絡(luò)運(yùn)營(yíng)商的依賴性。
技術(shù)生態(tài)圈
有了世界頂尖的硬件環(huán)境,軟件環(huán)境也不可少。下面我們著重介紹下Yahoo!的技術(shù)生態(tài)圈,看看Yahoo!使用了哪些產(chǎn)品和技術(shù)來(lái)支持大規(guī)模網(wǎng)絡(luò)應(yīng)用。
在雅虎內(nèi)部構(gòu)建一個(gè)超大規(guī)模應(yīng)用其實(shí)并不是那么的復(fù)雜,因?yàn)槲覀円呀?jīng)提供了一整套完整的技術(shù)體系來(lái)幫助開(kāi)發(fā)人員快速建立起一個(gè)具有高可維護(hù)性的超大規(guī)模應(yīng)用。
圖3 Yahoo!數(shù)據(jù)中心技術(shù)生態(tài)圈
從這張圖我們可以看到一個(gè)新應(yīng)用在生態(tài)圈里和現(xiàn)有技術(shù)平臺(tái)的關(guān)系:
新應(yīng)用(APPLICATION)只需要更多的關(guān)注自身的業(yè)務(wù)邏輯。與應(yīng)用密切關(guān)聯(lián)的本地信息,我們有一些本地存儲(chǔ)(LOCAL STORAGE)技術(shù)來(lái)供應(yīng)用使用,比如關(guān)系性數(shù)據(jù)庫(kù)MySQL、Oracle,存儲(chǔ)Key-value型數(shù)據(jù)的MDBM和Memcache.另外,雅虎還提供了大量的平臺(tái)服務(wù)(PLATFORM SERVICES)供我們各種應(yīng)用使用。比如統(tǒng)一驗(yàn)證平臺(tái)YCA來(lái)完成所有應(yīng)用內(nèi)及應(yīng)用間的身份驗(yàn)證,統(tǒng)一防御平臺(tái)Ydod來(lái)幫助我們識(shí)別并且隔離惡意/濫用的流量,用戶信息服務(wù)UPS可以讓?xiě)?yīng)用方便的獲取這個(gè)用戶的相關(guān)信息,如地理位置,興趣喜好等。個(gè)性化內(nèi)容推薦服務(wù)Slingstone,可以直接向用戶提供個(gè)性化的雅虎內(nèi)部及合作伙伴的內(nèi)容信息。另外新應(yīng)用還能方便快捷的接入廣告平臺(tái)(AD SERVER),獲取個(gè)性化推薦的廣告。前端應(yīng)用收集到的各種應(yīng)用相關(guān)信息(如瀏覽點(diǎn)擊數(shù)據(jù)),通過(guò)我們構(gòu)建在全球骨干網(wǎng)絡(luò)之上的數(shù)據(jù)高速公路(DATA HIGHWAY)這一統(tǒng)一數(shù)據(jù)通道,及時(shí)地回傳到雅虎全球最大的商用Hadoop群集。在Hadoop群集上不同應(yīng)用及平臺(tái)服務(wù)根據(jù)各自的需求,處理對(duì)應(yīng)的數(shù)據(jù),并將處理好的數(shù)據(jù)在通過(guò)雅虎全球骨干網(wǎng)絡(luò)分發(fā)到各個(gè)數(shù)據(jù)中心的服務(wù)端,以方便前端應(yīng)用的調(diào)用。同時(shí)Yahoo!在云端(THE CLOUD)還提供共享的云存儲(chǔ)(STORAGE),以方便全球化應(yīng)用的同步和調(diào)用各種共享數(shù)據(jù)。
除了這些常見(jiàn)的技術(shù)來(lái)幫助快速構(gòu)建超大規(guī)模應(yīng)用,我們還提供了大量的技術(shù)和產(chǎn)品來(lái)進(jìn)行高效的運(yùn)維和管理:
主機(jī)信息管理系統(tǒng):通過(guò)主機(jī)信息管理系統(tǒng)管理所有系統(tǒng)硬件信息,如CPU、內(nèi)存、硬盤(pán)、網(wǎng)卡地址、Console接口、電源接口、物理位置等。
角色配置管理系統(tǒng):主要是把主機(jī)根據(jù)角色分成不同的組,不同角色的主機(jī)會(huì)應(yīng)用不同的配置。不同角色的主機(jī)有不同的運(yùn)維團(tuán)隊(duì)、系統(tǒng)配置、應(yīng)用配置等。
網(wǎng)絡(luò)設(shè)備管理系統(tǒng):包括交換機(jī)上的訪問(wèn)控制列表、負(fù)載均衡設(shè)備的配置、全球負(fù)載均衡配置,以及訪問(wèn)狀態(tài)數(shù)據(jù)的統(tǒng)計(jì)。
統(tǒng)一的監(jiān)控平臺(tái):用于從不同層面進(jìn)行監(jiān)控,我們有所有主機(jī)系統(tǒng)數(shù)據(jù)的監(jiān)控,也有基于服務(wù)可用性的監(jiān)控。然后我們也有訪問(wèn)量、訪問(wèn)延時(shí)等應(yīng)用層面的數(shù)據(jù)監(jiān)控,并可以和歷史數(shù)據(jù)進(jìn)行比較。
所有的這些平臺(tái)大多都是雅虎運(yùn)維團(tuán)隊(duì)自行開(kāi)發(fā)和維護(hù)的,更貼合Yahoo!的使用體驗(yàn),幫助對(duì)超大規(guī)模的主機(jī)進(jìn)行統(tǒng)一和高效的管理。
運(yùn)維團(tuán)隊(duì)
前面的兩條分別是硬件和軟件環(huán)境,除了一流的硬件和完備的軟件環(huán)境,能夠?qū)崿F(xiàn)高可用性大規(guī)模應(yīng)用的核心,還是人。所以我們?cè)谧詈?,?huì)給大家介紹雅虎的全球運(yùn)維團(tuán)隊(duì)是如何工作的。
在Yahoo!我們的運(yùn)維團(tuán)隊(duì)除了基礎(chǔ)設(shè)施的Operation團(tuán)隊(duì),如數(shù)據(jù)中心現(xiàn)場(chǎng)工程師(SiteOps)、網(wǎng)絡(luò)運(yùn)維工程師(NetOps)、基礎(chǔ)設(shè)施(DNS、DHCP等)運(yùn)維團(tuán)隊(duì)(InfraOps)和安全團(tuán)隊(duì)(Paranoid)等。我們還會(huì)按照產(chǎn)品線劃分出Service Engineer團(tuán)隊(duì),來(lái)支持這項(xiàng)產(chǎn)品的應(yīng)用運(yùn)維。
SE(Service Engineer)團(tuán)隊(duì)和大部分公司的系統(tǒng)運(yùn)維工程師一樣,會(huì)負(fù)責(zé)生產(chǎn)系統(tǒng)維護(hù),如部署應(yīng)用、監(jiān)控報(bào)警、配置管理、變更管理及故障管理。除此之外,在雅虎SE團(tuán)隊(duì)會(huì)更多的深入了解應(yīng)用。
圖4 團(tuán)隊(duì)協(xié)作
從產(chǎn)品設(shè)計(jì)之初,我們就會(huì)和產(chǎn)品經(jīng)歷及研發(fā)團(tuán)隊(duì)共同討論系統(tǒng)架構(gòu)設(shè)計(jì),確保開(kāi)發(fā)團(tuán)隊(duì)將要實(shí)現(xiàn)的是高可用性、高可擴(kuò)展性及高可維護(hù)性的產(chǎn)品。產(chǎn)品測(cè)試階段,我們也會(huì)和測(cè)試團(tuán)隊(duì)保持密切的溝通,使測(cè)試環(huán)境能夠最大程度模擬生產(chǎn)環(huán)境的各種場(chǎng)景,以保證我們產(chǎn)品經(jīng)過(guò)了完整有效的測(cè)試。系統(tǒng)上線前,我們還會(huì)和各個(gè)團(tuán)隊(duì)評(píng)估整個(gè)產(chǎn)品的可維護(hù)性,并確定應(yīng)用的容量規(guī)劃及其故障轉(zhuǎn)移策略,確保SE團(tuán)隊(duì)充分了解如何在生產(chǎn)環(huán)境中維護(hù)該項(xiàng)產(chǎn)品。由于不同的團(tuán)隊(duì)可能在不同的國(guó)家和地區(qū),所以只有更緊密的全球化協(xié)作,才能為用戶提供一個(gè)高可用性、高可維護(hù)性的全球化產(chǎn)品。
產(chǎn)品上線以后,才是產(chǎn)品整個(gè)生命周期的開(kāi)始,我們需要確保產(chǎn)品在其設(shè)計(jì)的生命周期內(nèi),都能夠按照我們的預(yù)期提供高可用性的服務(wù)。所以在日常維護(hù)中,我們會(huì)和產(chǎn)品及研發(fā)團(tuán)隊(duì)一同分析產(chǎn)品運(yùn)行狀態(tài),分析總結(jié)各種故障,不斷的修正已有的Bug,提供新功能的建議與意見(jiàn)。根據(jù)各地用戶分布及產(chǎn)品的運(yùn)行狀態(tài),修正我們的容量規(guī)劃及故障轉(zhuǎn)移策略,進(jìn)一步提升用戶體驗(yàn)。
結(jié)語(yǔ)
以上只是雅虎在超大規(guī)模應(yīng)用運(yùn)維體系的簡(jiǎn)單概述,并沒(méi)有太多的技術(shù)細(xì)節(jié),瑾作拋磚引玉之用。雅虎全球運(yùn)維團(tuán)隊(duì)的工程師利用他們的智慧,不斷創(chuàng)新,一一應(yīng)對(duì)各種挑戰(zhàn),完成一個(gè)個(gè)不可能完成的任務(wù)。