2
本文作者: 史中 | 2016-10-17 15:33 |
你知道向左是燈紅酒綠,向右是滄海青山,卻無法知道向哪里走會最終給你更好的未來。
你知道應(yīng)該單膝下跪向心愛的人求婚,卻不知道今后的每一個日夜要如何相處,才能和她最終廝守一生。
每一條岔路都通向更多的岔路,每一個選擇都帶來更多的選擇。我們站在原地,憑著自己知道的“很多道理”,妄圖“過好這一生”,恐怕會惹上帝發(fā)笑。
這就是我們每個人面對的困境,我們精密的大腦可以在簡單的邏輯里做出最有利于自己的判斷,但在無數(shù)疊加的抉擇面前,卻無力地像隨風(fēng)浪跡的沙塵。
因為這世界上的選擇和它們通向的答案,比宇宙的星辰還要多。
我給你成千上萬形狀不一的小石塊,讓你填滿身上的背包。請你告訴我,你如何才能知道哪些石塊的組合才能讓背包裝得最滿?
唐洪,阿里云飛天系統(tǒng)的首席架構(gòu)師,用這個看似輕描淡寫問題描繪了阿里云的終極意義。
【阿里云飛天系統(tǒng)的首席架構(gòu)師 唐洪】
理論上來說,窮舉所有石塊的組合,就可以得到答案。但事實是,按照圖靈機的計算模型,計算的復(fù)雜度和可供選擇的石頭數(shù)目成指數(shù)關(guān)系。每增加一個石塊,計算量就翻一倍。
僅僅為了這一個答案,所需的計算能力就超出了人類所有計算機的總和。在哲學(xué)上,這恰如我們一次次的人生抉擇:除非你嘗試每一種可能,否則無法知道正確答案,而上帝不會給你嘗試每一種可能的機會。
這個事實讓人敬畏上蒼。
然而,在唐洪眼中,“飛天”——阿里云的核心操作系統(tǒng),正是為了這些“終極答案”而來。
在那部經(jīng)典的科幻電影《2001漫游太空》中,一個遠(yuǎn)古猿人把骨頭奮力拋向藍(lán)天,立刻幻化成穿梭在太空中的宇宙飛船。
這一幕被譽為科幻電影的經(jīng)典鏡頭,讓無數(shù)人熱淚盈眶。然而仔細(xì)想來,把一個宇宙飛船射向太空,原理不就等同于把一個碩大的骨頭扔向更高的天空嗎?
一個原始人都會做的動作,當(dāng)它的體量無限擴大以后,就變成了需要千萬年后的高科技才能實現(xiàn)的壯舉。
飛天所做的工作,說到“原子”層面,就是排序、數(shù)數(shù)。拿淘寶舉例,就是分析商品賣了幾個,分別是什么時候賣的。而一旦這樣的工作一旦變成大規(guī)模,各個數(shù)據(jù)之間都有關(guān)聯(lián),就很難在短時間內(nèi)得出正確答案。
把億萬賣家和買家的信息進行計算,得到的并不是簡單的商品庫存和銷售情況。
通過數(shù)據(jù)分析,可以讓用戶用最快的速度搜索到自己想要的商品。
通過數(shù)據(jù)關(guān)聯(lián),可以判斷用戶的性別愛好,從而根據(jù)場景做出精準(zhǔn)的商品推薦。
通過數(shù)據(jù)整合,可以判斷出一個人是否有信用污點,從而在金融產(chǎn)品中決定給申請者的貸款額度,控制壞賬率。
這些我們在淘寶、天貓、螞蟻金服中享受的功能,就是“大規(guī)模計算”得到的奇跡?!?+1”的小兒科,不經(jīng)意間變成了我們敬畏的“大數(shù)據(jù)”。
而把這些“大數(shù)據(jù)”繼續(xù)進行調(diào)度,就能產(chǎn)生“上帝之手”的功效。
大規(guī)模的任務(wù)調(diào)度是非常復(fù)雜的,例如滴滴打車的出租車規(guī)劃、機場的飛機調(diào)度,甚至是沃爾瑪?shù)膸齑婀芾恚疾皇强咳四X可以勝任的。因為每個場景都幾乎有無限種可能和選擇。
唐洪說。
至此,我們遇到了之前的“背包裝石頭”問題。
大家熟知的非對稱安全加密技術(shù),今天熱門的區(qū)塊鏈技術(shù),都是基于計算極限問題 (intractability)的假設(shè)。飛天當(dāng)然也不可能突破計算極限。所以我們只能給出近似解,而不是理論上的最優(yōu)解。
最優(yōu)解只有一個,而近似解有無窮多。怎樣在浩如煙海的解中找到最合適的近似解,就是飛天的“刀鋒”所在。
“從飛天誕生開始,我們一直在做的就是這件事。”他說。
由于不同行業(yè)的業(yè)務(wù)和數(shù)據(jù)有自己的特點,這就使得“飛天”計算集群可以把好鋼用在刀刃上。利用模型和算法刪除掉一些不可能的“子集”,這樣就可以使得最終的求解范圍在一定程度內(nèi)縮小。但即使這樣,所需的運算仍然超越想象。這時就需要另一套規(guī)則和模型根據(jù)“價值判斷”做出取舍。
這就像你身處一個碩大的房間迷宮中,每個房間都有很多門,而打開一扇門之后,又會進入一個新的房間,這個新的房間同樣有很多門。為了找到最終的出口,你需要先排除掉那些肯定不會通往出口的門,然后在這些可能的出口中,挑選可能性最大的那扇門。
由于沒有完美的正確答案,所以這些模型和判斷的優(yōu)化,永無止境。這在某種程度上類似于“進化”。
然而,大規(guī)模計算所面臨的問題,遠(yuǎn)遠(yuǎn)不止如上這一個,唐洪為雷鋒網(wǎng)列舉了另外一個重要的問題,那就是自動化的難度。
超越人腦的極限的計算,必須用自動化的程序來完成。但是數(shù)據(jù)體量變大之后,平??磥磉呥吔墙堑膯栴}就成為一個嚴(yán)重的情況,那就是如何保證自動化的正常運作。計算錯誤、指令未傳達(dá)、系統(tǒng)卡死等等小概率的事件,都會因為數(shù)據(jù)和計算集群的龐大而變得幾乎成為必然。
這個時候,就需要對于計算的每一個微小的步驟實現(xiàn)感知和監(jiān)控,發(fā)現(xiàn)錯誤。但是,對于云計算每個路徑的各個步驟實現(xiàn)監(jiān)控,絕非易事。
對于計算的跟蹤,需要對每一步進行“染色”,就是做一個標(biāo)記以便系統(tǒng)進行關(guān)聯(lián)。這就需要在處理過程中嵌入染色信息。但是系統(tǒng)運行的每一個步驟都各不相同,需要根據(jù)具體的情況來找到最好的嵌入點。更難辦的是,有些步驟根本沒有辦法嵌入信息。這個時候,就要根據(jù)計算周邊的信息來做推斷。
例如某個進程打開了文件,操作系統(tǒng)中會用一個描述符來表示這個文件,通過對描述符的關(guān)聯(lián),就可以把在操作系統(tǒng)內(nèi)核中發(fā)生的事件和用戶進程關(guān)聯(lián)起來了。
所有的跟蹤都是具體問題具體解決,可想而知付出的艱辛有多大。
他說。
以上這些“坑”,都是唐洪和飛天用了七年時間,一點一點趟出來的。然而,所有的這些微小進化的累積,都是建立在飛天的“算力”基礎(chǔ)之上的。
唐洪說,飛天系統(tǒng)就像一個巨大的計算機,只不過是由全球各地的數(shù)據(jù)中心,幾十萬臺服務(wù)器,通過專線聯(lián)系,組成的超大計算集群。
看到這里,你可能會恍然大悟,調(diào)度全球的幾十萬臺服務(wù)器,本身就是一個“背包裝石頭”的巨大挑戰(zhàn)。
唐洪給雷鋒網(wǎng)講述了飛天誕生的故事。
彼時的阿里巴巴,某種程度上說站在了危險的懸崖邊上,而還在嬰兒期的飛天,做了一個美麗的夢,名叫“5K”。
王堅,永遠(yuǎn)帶著一副笑容,身影高瘦看似弱不禁風(fēng)。不過,就是這個人,頂住了所有的質(zhì)疑和壓力,成為眾人心中守護阿里云從一顆嫩芽長成參天大樹的英雄。
包括唐洪在內(nèi)的所有人,都把王堅稱為“博士”。當(dāng)年,正是博士的一通越洋電話,把唐洪從美國“忽悠”了回來。
2012年的飛天還在研發(fā)的早期階段,只能支持最大 1500 臺機器的集群,也時常因為一些bug遭受客戶的吐槽。當(dāng)時,阿里巴巴的很多數(shù)據(jù)處理的任務(wù),還是建立在開源軟件 Hadoop 的系統(tǒng)之上的,這個集群大概有 3000-4000 臺機器。
【阿里巴巴集團技術(shù)委員會主席王堅】
但是,Hadoop 無論從安全性還是運行邏輯上,都不是為公共云計算設(shè)計的。
Hadoop 的存儲和計算是一體的,也就是說,如果你需要十臺機器的存儲,但不需要十臺機器的計算能力,你仍然需要十臺機器的集群,這是一種浪費。雖然可以通過其他方法解決這樣的問題,但是運行效率會大大降低。
Hadoop 的賬號體系,不是面向互聯(lián)網(wǎng)租戶的賬號體系,更多的是面對本地管理員。這就決定了它不能像如今的阿里云一樣出售給互聯(lián)網(wǎng)級別的用戶。
另外,Hadoop 高度的靈活性,允許應(yīng)用層的用戶直接訪問底層的文件,這存在巨大的安全隱患,也不可能直接以多租戶共享的形式跑在公有云上。
唐洪告訴雷鋒網(wǎng),以上的一切弊端,都很難通過修修補補的方式,在 Hadoop 上規(guī)避。而更關(guān)鍵的問題在于,阿里巴巴那時業(yè)務(wù)的增長速度,已經(jīng)趨近 Hadoop 集群的計算能力極限。一旦達(dá)到瓶頸,就必須被迫降低業(yè)務(wù)水平,或者主動限制業(yè)務(wù)規(guī)模。
在此之前,阿里巴巴曾經(jīng)進行過嘗試,用飛天來代替 Hadoop,但都以失敗而告終。彼時的阿里巴巴 CTO 王堅對所有阿里的童鞋說,這個任務(wù)還是應(yīng)該讓飛天來承擔(dān),因為在他心里有一個計劃,那就是把飛天做成 5000 臺服務(wù)器的集群。這個當(dāng)時讓很多同事取笑的瘋狂想法,就是“5K”。
從1500到5000,絕不僅僅是再買3500臺機器這么簡單。唐洪說:
摩爾定律注定了計算機硬件性能隨時間的指數(shù)增長 。從1500臺老機器到5000臺新機器,計算力增加了8倍到10倍。在短短不到半年時間內(nèi)實現(xiàn)如此大跨度的軟件能力的升級,對任何一個熟諳軟件工程規(guī)律的人來說,都是不可能的挑戰(zhàn)。
但是,飛天真的做到了。世界上買得起五千臺服務(wù)器的公司不少,但是真得有自己研發(fā)的技術(shù)調(diào)度這么大規(guī)模集群的,一只手都數(shù)得過來。
為什么阿里云一定要建設(shè) 5000 臺機器的集群呢?
唐洪告訴雷鋒網(wǎng),對于阿里巴巴來說,很多計算任務(wù)是沒有辦法拆解的,必須在一個計算集群里完成。如此大量彼此聯(lián)系的數(shù)據(jù),就需要這么多機器處在一個集群中協(xié)同分析。
就在2012年底的總裁會上,還有人提出要重新依靠 Hadoop。但最終總裁們決定兩條路一起走,既要 Hadoop 也要飛天。但是在我看來,這種決策讓技術(shù)力量分流了。其實,當(dāng)時我根據(jù)團隊內(nèi)部的模擬實驗結(jié)果,心里很清楚達(dá)到 5K已經(jīng)不是架構(gòu)設(shè)計的問題,而是一個產(chǎn)品細(xì)節(jié)打磨的過程了 。但其他部門的同事可能并不這么認(rèn)為。這樣兩條路一起走就大大分流了技術(shù)力量,所以5K能夠早一天做出來,就能早一天終結(jié)爭論。
他說。
2013年8月15日,是唐洪脫口而出的日期。這一天,事實宣判了王堅、唐洪和飛天的判斷是對的 。5K 集群上線,并且是同時上線了兩個 5K集群。
在阿里巴巴云棲小鎮(zhèn)里,樹立著一尊 5K 的雕像。這尊雕像比想象中要小,卻絲毫不能阻擋它向周圍散發(fā)著理想的質(zhì)感,很多路過的人都會駐足觀看。
【坐落在阿里云棲小鎮(zhèn)的飛天 5K 雕像】
唐洪告訴雷鋒網(wǎng),后來的事實證明,Hadoop 集群在超越4000臺機器集群之后,會遇到不可逾越的瓶頸。如果當(dāng)時阿里巴巴選擇依賴 Hadoop 系統(tǒng),如此高的業(yè)務(wù)增長,將會遇到計算性能的“斷崖”,后果難以設(shè)想。
就像當(dāng)年的波音的747飛機、Intel的x86芯片、SpaceX 的火箭一樣,所有的偉大創(chuàng)造,都來自于孤注一擲。
唐洪如此感慨。
我記得2012年或者2013年我們進行校招的時候,清華北大的學(xué)生來面試的非常少,而且很多同學(xué)即使拿到了我們的Offer,他們的第一選擇也會是百度和騰訊。
唐洪把這個悲傷的事實當(dāng)作一個段子講給雷鋒網(wǎng)。在今年的阿里星面試上,唐洪問同學(xué)問為什么選擇來阿里云,得到的回答是“阿里云的云計算技術(shù)領(lǐng)先”。
他簡單地形容了一下現(xiàn)在的飛天:
單集群萬臺,全球總共幾十萬臺服務(wù)器,每天數(shù)據(jù)平臺處理的數(shù)據(jù)超過 1PB。
不過他覺得,這些都不能說明飛天的強大,真正有說服力的,是阿里巴巴在“吃自己的狗糧”,也就是包括淘寶天貓在內(nèi)的部分重要業(yè)務(wù),包括瞬時并發(fā)計算量驚人的“雙十一”,都由飛天來負(fù)責(zé)云計算調(diào)度。也就是說,阿里巴巴自己也在使用給其他客戶提供的相同的云服務(wù),沒有任何特權(quán)和區(qū)別。
“我相信國內(nèi)某些競爭者們自己的服務(wù)肯定沒有跑在自家提供的云上。”他說。
讓阿里云引以為傲的一個數(shù)據(jù)是:在中國 37% 的網(wǎng)站都建立在阿里云之上。
我們的預(yù)計是,未來全世界可能只有幾臺“計算機”,他們都是由超大規(guī)模計算集群組成的。這個時候,計算力就會被徹底地解放。
如果唐洪的預(yù)想成真,那時有關(guān)“背包裝石子”的計算,將會得出比現(xiàn)在更接近真相的解。也許我們永遠(yuǎn)找不到正確的答案,但是毋庸置疑,機器每每向正確答案逼近一小步,都是人的光榮。
每年,阿里云都會在大本營杭州舉行云棲大會,公布阿里云和飛天的最新進展。在今年的大會上,馬云發(fā)表了熱情洋溢的演講。
原來的機器制造將會變成人工智能,原來機器吃的是電,未來機器吃的是數(shù)據(jù)。
馬云如是說。
可見,機器學(xué)習(xí)和人工智能,正是飛天下一步棋。
對于人來說,岔路后面的岔路,選擇背后的選擇,讓我們感覺到渺小和恐懼。為了對抗命運的無常,我們發(fā)明了云計算,我們發(fā)明了人工智能。無論對于唐洪還是飛天來說,這些無數(shù)運轉(zhuǎn)的芯片,無數(shù)網(wǎng)絡(luò)中川流不息的電流,都只有一個目的:
向世界要一個答案。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。