8 年前,亞馬遜發(fā)布了第一個(gè)云計(jì)算產(chǎn)品。亞馬遜一直堅(jiān)持云計(jì)算的目的,就是屏蔽底層的硬件,為開發(fā)者提供計(jì)算資源以運(yùn)行應(yīng)用程序。 對(duì)于 AWS,還有其母公司亞馬遜,硬件都是一個(gè)競(jìng)爭(zhēng)優(yōu)勢(shì)。亞馬遜一向不大愿意過(guò)多談?wù)撟约旱臄?shù)據(jù)中心和系統(tǒng)。 但是那些競(jìng)爭(zhēng)對(duì)手們,包括 GOOGLE, MICROSOFT 和 IBM,則大肆宣傳在云計(jì)算上的投入和創(chuàng)新。亞馬遜也就不得不稍稍揭開一點(diǎn)自己的神秘面紗。
原因很簡(jiǎn)單。亞馬遜的在線零售業(yè)務(wù),是一個(gè)700億美金的龐然大物,大雖大,但耗費(fèi)現(xiàn)金并不多。 Jeff Bezos,亞馬遜的創(chuàng)始人兼 CEO,對(duì)于利潤(rùn)的興趣很小,對(duì)于改變世界的興趣倒是很大。然而,云計(jì)算畢竟是這個(gè)世界上,資本最為密集的行業(yè)之一。Google 可以在數(shù)據(jù)中心上花費(fèi)幾百億美金而毫不心痛,背后有壟斷性業(yè)務(wù)“搜索引擎”的支撐。 Microsoft,則在桌面軟件和數(shù)據(jù)中心軟件方面有著壟斷的地位,錢袋一樣深不可測(cè),自然也一樣敢于一擲千金。
Google 和 Microsoft 在燒錢上的本事,無(wú)人能及。 但他們的基礎(chǔ)設(shè)施和平臺(tái)服務(wù),面對(duì)亞馬遜時(shí)的競(jìng)爭(zhēng)力,還是令人生疑。 但若從長(zhǎng)期來(lái)看,亞馬遜能否跟得上 google 和 microsoft 的腳步,卻很成問(wèn)題了。 于是,AWS 的副總裁,卓越的工程師,James Hamilton 透露了AWS 云的規(guī)模和范圍。目的自然為了告訴大家,亞馬遜的領(lǐng)先地位以及對(duì)云計(jì)算的決心。
最重要的,永遠(yuǎn)是規(guī)模。做在線零售的亞馬遜,當(dāng)然清楚這個(gè)。 亞馬遜很少談及公有云,因?yàn)樵趤嗰R遜的理論中,云計(jì)算就不該是私有云。亞馬遜認(rèn)為,長(zhǎng)期來(lái)看,公有云的巨大規(guī)模,意味著大部分的組織和機(jī)構(gòu)都不需要運(yùn)營(yíng)自己的數(shù)據(jù)中心。
在 AWS 的 Re:Invent 大會(huì)上,jassy又一次強(qiáng)調(diào),自云計(jì)算業(yè)務(wù)開始以來(lái),他和亞馬遜的 CTO Werner Vogels 就支持這個(gè)論點(diǎn)。(亞馬遜為美國(guó)中央情報(bào)局建設(shè)過(guò)一個(gè)特殊的 AWS 私有云,簽署了為期10 年,6.6 億美金的合同。但那只不過(guò)是一個(gè)例外。云計(jì)算本質(zhì)上還應(yīng)該是公有的)。 Jassy and Vogels的信念很簡(jiǎn)單: 只有覆蓋了全區(qū)域,具備大容量,提供最豐富功能的云,才能勝出。會(huì)有一些例外,比如說(shuō)金融服務(wù)云,或者那種100%運(yùn)行特殊硬件和軟件的巨型計(jì)算中心。 公有云的資源不僅足夠好,而且一定會(huì)超越大部分的私有云。
AWS 將底層的計(jì)算能力、存儲(chǔ)和網(wǎng)絡(luò)功能,抽象出來(lái),這樣開發(fā)者就可以專注于應(yīng)用開發(fā)。抽象出來(lái)的資源,要么形成純粹的基礎(chǔ)設(shè)施,要么在其上繼續(xù)抽象出一層平臺(tái)服務(wù),便于進(jìn)一步實(shí)現(xiàn)自動(dòng)化部署和對(duì)中間件、數(shù)據(jù)庫(kù)和支持應(yīng)用的其他服務(wù)的管理。但這并不是說(shuō)底層的基礎(chǔ)設(shè)施不重要。 實(shí)際上,亞馬遜投入了巨大資金,用來(lái)設(shè)計(jì)和建設(shè)數(shù)據(jù)中心,并優(yōu)化各方面的設(shè)施從內(nèi)存條到數(shù)據(jù)中心的墻壁。基礎(chǔ)設(shè)施確實(shí)重要,絕對(duì)能夠形成競(jìng)爭(zhēng)優(yōu)勢(shì)。
網(wǎng)絡(luò)的事,比服務(wù)器還麻煩
和許多超級(jí)數(shù)據(jù)中心一樣,亞馬遜的服務(wù)器,剛開始也是從一線的服務(wù)器制造商那里購(gòu)買。亞馬遜成了rackable system(現(xiàn)在是 SGI 旗下公司)最大的客戶。 后來(lái),亞馬遜決定自行制造系統(tǒng),以便針對(duì)自己的工作性質(zhì)進(jìn)行精確調(diào)優(yōu)。尤為重要的,是為了能夠與其數(shù)據(jù)中心、電力、制冷系統(tǒng)嚴(yán)絲合縫的配合。數(shù)據(jù)中心在與時(shí)俱進(jìn)的發(fā)展,系統(tǒng)也需要步調(diào)一致的前進(jìn)。
過(guò)去,亞馬遜在其基礎(chǔ)設(shè)施的規(guī)模問(wèn)題上,只含糊其辭,從不給出準(zhǔn)確的數(shù)據(jù)。從2004年開始,AWS 每一天都要安裝足夠多的服務(wù)器以支撐亞馬遜的在線零售業(yè)務(wù)。那個(gè)時(shí)候,亞馬遜的收入規(guī)模,僅為70億美金,僅為現(xiàn)在的1/10。
“去年發(fā)生的那些變化?”Hamilton反問(wèn)道,然后開玩笑說(shuō):“我們都執(zhí)行過(guò)365次了。”
換句話說(shuō),去年 AWS 增添了足夠多的容量,以支撐2.55萬(wàn)億的在線零售業(yè)務(wù)。
那么,AWS 到底容量多大? 答案是:比很多人想的還要大。
下面就是關(guān)于服務(wù)器的計(jì)算了。 亞馬遜在全球11個(gè)地區(qū)擁有數(shù)據(jù)中心。 每一個(gè)地區(qū)擁有最少2個(gè)可用區(qū),這樣所有地區(qū)一共擁有28個(gè)可用區(qū)。 (包括兩周前在德國(guó)法蘭克福啟動(dòng)的新地區(qū))這些可用區(qū)為本地的工作負(fù)荷,提供隔離的和冗余的能力。類似那種串聯(lián)或者分層的容錯(cuò)系統(tǒng),在數(shù)據(jù)中心和服務(wù)的層次上工作,而不是在兩個(gè)系統(tǒng)之間嚴(yán)格步調(diào)一致。每個(gè)可用區(qū)最少有一個(gè)數(shù)據(jù)中心,有些則多達(dá)6個(gè)數(shù)據(jù)中心。 (2013年1月,Hamilton 在 Re:Invent 會(huì)議上說(shuō),僅只美東地區(qū)便有超過(guò)10個(gè)數(shù)據(jù)中心,但在2014年的Re:Invent 會(huì)議上他的演講中,又說(shuō)沒(méi)有可用區(qū)擁有超過(guò)6個(gè)數(shù)據(jù)中心。)目的是為了讓客戶能夠構(gòu)建自己的應(yīng)用,運(yùn)行在不同的可用區(qū)上,以實(shí)現(xiàn)本地?cái)?shù)據(jù)保護(hù)。更進(jìn)一步,實(shí)現(xiàn)跨地區(qū)部署,達(dá)到更高層次的可用性。 亞馬遜通過(guò)增加新的數(shù)據(jù)中心,以為每個(gè)可用區(qū)提升容量。
基本上,和企業(yè)客戶增加的機(jī)架一樣,數(shù)據(jù)中心實(shí)際上就是 AWS 的新機(jī)架。
好了,這一切都還是很有意思的。 Hamilton 說(shuō) AWS 的每一個(gè)區(qū)域都最少有兩個(gè)可用區(qū),每個(gè)可用區(qū)則最少有1個(gè)數(shù)據(jù)中心。然后他又補(bǔ)充說(shuō),一個(gè)典型的數(shù)據(jù)中心最少有5萬(wàn)臺(tái)服務(wù)器,有的超過(guò)8萬(wàn)臺(tái)。 另外,數(shù)據(jù)中心的規(guī)模效益在到達(dá)頂峰后便即下降。隨著規(guī)模擴(kuò)大,在某一個(gè)點(diǎn),數(shù)據(jù)中心的邊際成本開始上升,而不是下降。 更重要的是,在到達(dá)某一個(gè)數(shù)值后,一旦發(fā)生災(zāi)難型事故導(dǎo)致數(shù)據(jù)中心失效,則殃及的“爆炸半徑”太大,使得過(guò)多的負(fù)載無(wú)法轉(zhuǎn)移。
做一點(diǎn)計(jì)算吧。 假設(shè) AWS 有28個(gè)可用分區(qū),每一個(gè)數(shù)據(jù)中心只有5萬(wàn)服務(wù)器。這是 AWS 基礎(chǔ)設(shè)施最小的容量了。這樣,全球共有140萬(wàn)服務(wù)器。如果你不相信,說(shuō)每個(gè)分區(qū)有8萬(wàn)臺(tái)服務(wù)器(我們知道這不是真的,只不過(guò)設(shè)置一個(gè)錯(cuò)誤的最高界線),那么就是224萬(wàn)機(jī)器。 為了更準(zhǔn)確的猜測(cè) AWS 基礎(chǔ)設(shè)施的規(guī)模,你必須猜測(cè)可用區(qū)中,數(shù)據(jù)中心數(shù)量的分布情況。 我認(rèn)為很少情況下,只有一個(gè)數(shù)據(jù),大部分都是2個(gè)數(shù)據(jù)中心,擁有更多數(shù)據(jù)中心的情況則越來(lái)越少,直到到達(dá)最大值6個(gè)數(shù)據(jù)中心。我把數(shù)據(jù)擺弄來(lái)擺弄去,覺(jué)得 28個(gè)分區(qū),一共87個(gè)數(shù)據(jù)中心這樣的估算還是靠譜的。 每個(gè)分區(qū)平均3個(gè)數(shù)據(jù)中心還要多一點(diǎn)。 如果假設(shè)每個(gè)可用區(qū)平均6萬(wàn)5千個(gè)服務(wù)器,那么你會(huì)看到數(shù)值很大:564萬(wàn)服務(wù)器。如果平均5萬(wàn)服務(wù)器,則降低到全球420萬(wàn)機(jī)器。如果假設(shè)每個(gè)可用區(qū)的數(shù)據(jù)中心少一些-比如平均2個(gè)-那么一共280萬(wàn)臺(tái)機(jī)器。 由此,答案是 AWS 可能擁有280萬(wàn)到560萬(wàn)服務(wù)器。 我也意識(shí)到很可能誤差很大,可是也只能這樣猜測(cè)了。
總的來(lái)說(shuō),規(guī)模是巨大的。 還不止這些,亞馬遜還投入了巨大資金,制造自有的網(wǎng)絡(luò)設(shè)備,并建設(shè)了私有網(wǎng)絡(luò),從而把所有數(shù)據(jù)中心連接在一起形成一個(gè)巨大的全球集群。 這是 Hamilton 談起來(lái)最興奮的東西,因?yàn)榫W(wǎng)絡(luò)是計(jì)算能力最大的瓶頸。
“對(duì)我們而言,網(wǎng)絡(luò)互聯(lián)是當(dāng)前最大的危機(jī)” Hamilton解釋道“網(wǎng)絡(luò)建設(shè)的成本,與所有其它設(shè)備的成本都相關(guān),不斷攀升。在這方面是反摩爾定律的。我們所有的設(shè)備都在降低成本,我們也在壓低價(jià) 格,但網(wǎng)絡(luò)成本則反向而行。這是個(gè)大問(wèn)題。往前再看遠(yuǎn)幾年,網(wǎng)絡(luò)的問(wèn)題越發(fā)嚴(yán)重。同時(shí)網(wǎng)絡(luò)是反摩爾定律的,網(wǎng)絡(luò)建設(shè)對(duì)計(jì)算能力的占比也在上升。”
Hamilton 說(shuō),部分原因,是由于每一代的cpu都帶來(lái)更多的計(jì)算能力,而每單元計(jì)算能力的成本則在下降。 越來(lái)越多的人,做越來(lái)越多的數(shù)據(jù)分析,而數(shù)據(jù)分析工作對(duì)網(wǎng)絡(luò)的需求巨大,給網(wǎng)絡(luò)帶來(lái)巨大壓力。(這是因?yàn)閿?shù)據(jù)分析,和超級(jí)計(jì)算機(jī)的運(yùn)作一樣,在節(jié)點(diǎn)之間要進(jìn)行大量通信,也就是所謂的“東西流量”。而另一種“南北流量”則是 web 應(yīng)用從服務(wù)器上請(qǐng)求一點(diǎn)數(shù)據(jù)并在互聯(lián)網(wǎng)上顯示出來(lái)。二者區(qū)別很大。)
所以約五年前,當(dāng)問(wèn)題剛剛出現(xiàn)時(shí),AWS 設(shè)計(jì)了自己的網(wǎng)絡(luò)路由器并去原廠制造硬件,并組建團(tuán)隊(duì)在硬件上開發(fā)網(wǎng)絡(luò)軟件。
亞馬遜從定制網(wǎng)絡(luò)設(shè)備中學(xué)習(xí)到的第一件事,和它很久以前從服務(wù)器和存儲(chǔ)中學(xué)到的一樣: 如果你用極簡(jiǎn)主義理念,自主制造所需的設(shè)備,那么就會(huì)便宜很多。“僅僅網(wǎng)絡(luò)設(shè)備的服務(wù)合同,常常就要幾千萬(wàn)美金。”
但即便對(duì) Hamilton 而言,也是頗為驚奇的事:網(wǎng)絡(luò)的可用性上升了,而不是下降。 這是因?yàn)?AWS 交換機(jī)和路由器只具備 AWS 在網(wǎng)絡(luò)上所需的功能。 但商業(yè)網(wǎng)絡(luò)操作系統(tǒng),則必須覆蓋所有可能需要的場(chǎng)景和協(xié)議,因而往往需要幾千萬(wàn)行的代碼,從而帶來(lái)維護(hù)上的困難。 “我們的設(shè)備更可靠,因?yàn)槲也恍枰鎸?duì)那些更麻煩的問(wèn)題。能完成任務(wù)的,就是好方法。”
另一件事,亞馬遜,尤其是 AWS 熱衷于測(cè)試并收集運(yùn)行數(shù)據(jù)。 當(dāng)亞馬遜第一次測(cè)試自己的網(wǎng)絡(luò)時(shí),用了8000臺(tái)服務(wù)器,容量3兆瓦的數(shù)據(jù)中心。而這個(gè)數(shù)據(jù)中心的建設(shè)成本約為4千萬(wàn)美金。任何一家最大的網(wǎng)絡(luò)設(shè)備提供商都做不到,但 AWS 可以,而且做到了。 嚴(yán)格來(lái)說(shuō),亞馬遜是從自己那里租了這巨大規(guī)模的數(shù)據(jù)中心用以測(cè)試,在幾個(gè)月里花費(fèi)了幾十萬(wàn)美金。今天亞馬遜所有網(wǎng)絡(luò)都在使用這自有的網(wǎng)絡(luò)軟件。與擁有軟件和詳細(xì)測(cè)試一樣重要的是,亞馬遜持續(xù)開發(fā)代碼并投入生產(chǎn)。 “也許開始的時(shí)候確實(shí)差一點(diǎn),但確實(shí)越來(lái)越好。”
簡(jiǎn)單來(lái)說(shuō),這就是超級(jí)系統(tǒng)的獨(dú)特之處。 總是從簡(jiǎn)陋,到還湊活,一直到完善狀態(tài)。 走一條穩(wěn)定、革新的路,當(dāng)然這條路會(huì)時(shí)時(shí)被新的理念打斷均衡的過(guò)程。
[page]AWS 當(dāng)前有11個(gè)地區(qū),2年前是9個(gè)地區(qū),還將增加更多以接近客戶,并滿足業(yè)務(wù)上對(duì)政府管轄權(quán)的需求。(德國(guó)地區(qū)就是因?yàn)榈聡?guó)的商業(yè)機(jī)構(gòu)和政府機(jī)構(gòu),不能在愛(ài)爾蘭存儲(chǔ)數(shù)據(jù)而創(chuàng)建的)這是他們分布的位置:
所有的地區(qū)都連接在一起,通過(guò)私有光纖通道,而不是通過(guò)購(gòu)買第三方的通道。原因很簡(jiǎn)單: 這樣做,不會(huì)因?yàn)檫\(yùn)營(yíng)商的問(wèn)題而導(dǎo)致網(wǎng)絡(luò)帶寬缺乏,而且網(wǎng)絡(luò)是你自己的,你清楚知道網(wǎng)絡(luò)的效率。也更加經(jīng)濟(jì),對(duì)于亞馬遜這么大的規(guī)模,自己擁有網(wǎng)絡(luò),在每個(gè)字節(jié)上的單位價(jià)格一定更便宜。 另外,自有的網(wǎng)絡(luò)也比較快,亞馬遜不會(huì)緩沖自己的流量。而運(yùn)營(yíng)商遇到過(guò)載的時(shí)候,就會(huì)對(duì)流量進(jìn)行緩沖。 “更可靠、更經(jīng)濟(jì)、也更少延遲” Hamilton這樣說(shuō)。
美東地區(qū),弗吉尼亞州的阿什本,共有5個(gè)可用區(qū)。這些可用區(qū)都是受保護(hù)的區(qū)域,各自分離并隔開幾公里,由高速、低延遲網(wǎng)絡(luò)連接。這樣一來(lái),同步的復(fù)制就是可能的,而且地理上的隔離足夠遠(yuǎn),兩個(gè)可用區(qū)(存儲(chǔ)數(shù)據(jù)和應(yīng)用的多個(gè)版本)同時(shí)出現(xiàn)事故的可能性就很小。 可用區(qū)單元由光纖聯(lián)接,使用密集型波分復(fù)用傳送數(shù)據(jù)包。在美東地區(qū),一共有82864條光纖。 可用區(qū)在延遲方面通常都小于1毫秒,絕對(duì)小于2毫秒;這個(gè)速度是可以進(jìn)行同步數(shù)據(jù)復(fù)制的。要知道,固態(tài)硬盤的數(shù)據(jù)保存也要在1-2毫秒之間。
企業(yè)經(jīng)常在關(guān)鍵應(yīng)用上,通常都會(huì)進(jìn)行跨區(qū)域復(fù)制。但在麻煩一些的場(chǎng)景中,比方說(shuō),一個(gè)數(shù)據(jù)中心在紐約,一個(gè)在洛杉磯,則延遲大約為74毫秒。這種情 況下,就無(wú)法進(jìn)行同步復(fù)制,這就意味著一次失敗,數(shù)據(jù)就會(huì)在到達(dá)備份系統(tǒng)的傳輸途中丟失。這樣一來(lái),就只能使用日志恢復(fù),而這則要花費(fèi)數(shù)天時(shí)間了。
這就是為什么亞馬遜在 2000 年要發(fā)明可用區(qū)。 這種方法一定程度上,更加昂貴,但災(zāi)難恢復(fù)更快。 可用區(qū)在美東地區(qū)有 25Tb/sec 的帶寬,為了應(yīng)用的可靠性,這個(gè)花費(fèi)還是值得的。對(duì)于在線零售商來(lái)說(shuō),這肯定是必須的。 想像一下你開車去沃爾瑪,而整個(gè)庫(kù)存卻都空了。如果發(fā)生了愚蠢的錯(cuò)誤,例如負(fù)載均衡失效,則可用區(qū)中的一個(gè)就會(huì)承擔(dān)負(fù)荷并繼續(xù)工作,重建同步隨即便可開始。
讓我們進(jìn)入一個(gè)可用區(qū)看看。 美東地區(qū)的可用區(qū)中,每個(gè)數(shù)據(jù)中心之間網(wǎng)絡(luò)傳輸只需1/4毫秒,而且沒(méi)有一個(gè)數(shù)據(jù)中心跨越2個(gè)分區(qū)。 實(shí)際上,如上所述,一個(gè)可用區(qū)可以有多個(gè)數(shù)據(jù)中心,美東看上去有10個(gè)數(shù)據(jù)中心,而據(jù)說(shuō)有些可用區(qū)有多達(dá)6個(gè)數(shù)據(jù)中心。 可用區(qū)中有多個(gè)冗余交換中心。這樣,即使亞馬遜丟掉一個(gè)交換中心和多個(gè)可用區(qū),一切都還可以正常運(yùn)行。
進(jìn)入一個(gè)可用區(qū)的數(shù)據(jù)中心,如上所述,有50000服務(wù)器,有時(shí)候還會(huì)多達(dá)80000機(jī)器。 一個(gè)aws數(shù)據(jù)中心大概在25兆瓦到30兆瓦之間,如果一共有87個(gè)數(shù)據(jù)中心,則總共有2.17吉瓦(2.17個(gè)十億瓦)到2.6吉瓦電力消耗。 Hamilton 說(shuō)亞馬遜可以運(yùn)行60兆瓦的數(shù)據(jù)中心,但問(wèn)題是,從2000個(gè)機(jī)架到2500個(gè)機(jī)架,成本并不會(huì)降低很多,而且災(zāi)難范圍,也就是他所說(shuō)的“爆炸半徑”,太巨大。 “從某個(gè)點(diǎn)開始,價(jià)值降低而成本升高。在我們看來(lái),這大概就是正確的數(shù)字了”Hamilton這樣評(píng)價(jià)亞馬遜為數(shù)據(jù)中心定義的大小。
記下來(lái)吧,競(jìng)爭(zhēng)對(duì)手們。
一個(gè)單獨(dú)的數(shù)據(jù)中心,有高達(dá)102 Tb/sec 帶寬的分配,這是美東地區(qū)的可用區(qū)之間的帶寬的4倍。Hamilton補(bǔ)充說(shuō)數(shù)據(jù)中心內(nèi)部的帶寬還要“遠(yuǎn)超” 102Tb/sec。
再到一個(gè)機(jī)架里看看,到一個(gè)服務(wù)器和虛擬網(wǎng)卡里看看。 網(wǎng)卡支持SR-IOV,這是PCI-Express協(xié)議的擴(kuò)展。 PCI-Express 協(xié)議對(duì)物理網(wǎng)絡(luò)設(shè)備的資源進(jìn)行虛擬化。 SR-IOV繞過(guò)操作系統(tǒng)上運(yùn)行的通常軟件協(xié)議棧,以及網(wǎng)絡(luò)驅(qū)動(dòng)和支撐他們的hypervisor層。從應(yīng)用到網(wǎng)卡,需要幾毫秒。 通過(guò)網(wǎng)卡只需要微秒,而通過(guò)光纖到達(dá)另一個(gè)服務(wù)器的網(wǎng)卡接口則只需要幾個(gè)納秒(十億分之一秒)。“這就是說(shuō)最麻煩的就是兩端軟件上的延遲” Hamilton解釋。 SR-IOV非常輕量,給虛擬機(jī)上的每一個(gè)客戶分區(qū)一個(gè)自己的虛擬網(wǎng)卡。這些虛擬網(wǎng)卡來(lái)自物理網(wǎng)卡。
為什么亞馬遜實(shí)現(xiàn)這些這么難?因?yàn)樾枰獮榫W(wǎng)絡(luò)協(xié)議棧添加安全、隔離、計(jì)量、控制和效率衡量等去掉的功能。 這些都需要耗費(fèi)時(shí)間。 AWS 的新實(shí)例類型都有SR-IOV功能,也將在所有實(shí)例類型中普及。