解密阿里巴巴的技術發展路徑

tmtpost發表於2014-07-17

  從B2B、淘寶、支付寶到阿里雲,阿里巴巴始終做著截然不同的內部創新,這種主動激進的風格也滲透到每一次的技術選擇中。

  2008年的一天,阿里巴巴集團(下稱“阿里”)開了一次內部會議。在這次當時看來很平常的會議上,明確了兩個議題:一,阿里是一家資料公司;二,阿里要把“計算”變成一種像水和電一樣的公共品。當時在中國還沒有人談“大資料”的概念;更沒有人想到雲端計算會和一家網際網路公司未來發展如此緊密。

  1999年阿里成立之初,創始人“十八羅漢”中就不乏技術基因。公開資料顯示,創始人之一吳泳銘1996年畢業於浙江工業大學計算機系,後成為支付寶的技術總監。盛一飛有多年使用者體驗設計經驗。周悅虹,java架構師,技術精湛,傳言是一名極客。

  隨著淘寶網的成立,2003年阿里開始與IBM合作,解決使用者、商品和消費資訊分散的問題。當時的阿里已經從十幾個人的小公司延展出很多新業務,技術系統也變得龐大複雜。到了2007年,阿里在IT上的投入之大,一度成為IBM、Oracle等國外IT廠商在中國的標杆使用者。當年,阿里首席資料庫管理員馮春培甚至受到了Oracle公司亞太區高階副總裁Brian Mitchell親切接待,並被授予甲骨文全球第100個ACE(Oracle ACE 是指那些通過撰寫書籍、文章或部落格,分享Oracle經驗的技術專家)。

  但實際上,這種甜蜜的合作關係並沒有持續太久。

  2008年前後,阿里業務高速發展使已有的IT裝置使用到達瓶頸。根據時任支付寶資料庫架構師、現丁香園CTO馮大輝的描述:“在阿里的IT架構中,淘寶和支付寶等擁有大量IBM小型機和Oracle資料庫,以及EMC、戴爾儲存裝置。使用者激增與使用者產生的資料越來越多,每年早上8:00~9:30之間CPU(中央處理器)要保持98%的使用率。”IBM小型機價格從幾十萬到高達百萬級人民幣,與Oracle簽訂的資料庫軟體費用達數千萬,加之一大筆軟硬體支付和一大筆維護費,阿里的技術發展進入一個壓力很大的時期。

  緊迫之中,阿里在尋找一名技術高管,要為龐大複雜的業務搭建起全新的技術架構,建立全球頂尖IT團隊。在2008年的這次內部會議上,阿里確定了“資料”和“雲端計算”兩個重要的新戰略。

  時任阿里巴巴首席架構師的王堅成為接受這個挑戰的不二人選。

  “去IOE”念頭萌生

  加入阿里巴巴之前,王堅任微軟亞洲研究院常務副院長;再之前,他是浙江大學心理學系教授、系主任。加盟阿里後,王堅馬上著手第一個重要工作——籌劃集團全年的IT預算。他反覆琢磨,發現一個重要問題:即便追加鉅額IT投資,阿里購買的軟硬體也未必能滿足其業務的高速增長。

  “雙十一”大促對IT計算資源要求龐大,很難預測業務爆發點所需要的計算資源峰值。但過了高峰期,IT資源空下來,又會造成浪費。這些實實在在的難題是為阿里提供軟硬體服務的廠商從沒遇到過的,IBM、Oracle和他們的客戶都不能為阿里IT提供任何可供借鑑的經驗。其次,整個IT就像是一個黑箱子,一旦出現技術故障後,阿里的技術團隊要打電話給廠商等待事故處理,而且高階儲存裝置的效能資料都是由廠商掌控,阿里自己的技術團隊並沒有太大的控制權。技術維護變成極其繁瑣的工作,支撐業務的效率大大下降。

  而在地球的另一端,Google和Amazon是和阿里業務相近,並值得學習的兩個好榜樣——Google是世界上少有的能擁有大規模分散式架構技術的網際網路公司,Amazon是第一個將自己雲端計算技術對外提供服務,實現營收的公司。

  在一次預算討論中,阿里巴巴集團負責技術保障的副總裁劉振飛和阿里技術保障部DBA負責人周寶方偶然提到:“阿里應該嘗試用PC技術替代小型機技術。”一聽這句話,王堅一下子激動起來:“既然已經思考了這個問題,為什麼我們不鄭重寫下來?明確阿里再也不購買小型機。”

  “去IOE”(在IT裝置中去除IBM小機、Oracle資料庫及EMC儲存)由此得名。

  在2009年到2013年整個“去IOE”的過程中,阿里技術發展策略逐漸從“商業軟體”、“開源軟體”發展到自主技術和雲端計算構成的綜合技術服務能力。便宜的Commodity PC替換掉過去昂貴的硬體裝置,淘寶、支付寶等重要業務將舊的“IOE”集中式架構轉變為分佈化架構,這種架構是把IT後臺遷移到雲端計算平臺上的基礎工作。

  在“去IOE”過程中,阿里技術團隊也完成了一次成熟的轉型,這為阿里向外提供雲服務打下了基礎。王堅來阿里之前,阿里各業務技術後臺是獨立運營的,他將阿里運維團隊、平臺技術部、大淘寶運維團隊、雲端計算運維團隊等整合到一起,成立了集團統一的IT技術保障部。阿里旗下子業務模式差別巨大,IT工具和價值理念也完全不同,所以統一團隊經歷了很大的技術挑戰和組織挑戰。這項工作實際為後期阿里雲向外提供服務打下了很好的基礎,阿里後期推出的“聚石塔”、“聚寶盆”業務,與這支在“去IOE”過程中鍛煉出的隊伍密不可分。

  除了團隊,技術人員也面臨著個人轉型。王堅曾多次說:“‘去IOE’最難的就在於人。每一次的技術轉換,我們都是在革自己的命。如果沒有同事們當時敢於嘗試的勇氣,阿里的技術難題都可能扛不過去。”曾有一位技藝精湛、對業務非常熟悉的淘寶資料庫管理員,在“去IOE”過程中,他從Oracle資料庫技術,轉到MySQL資料庫,最後去研發阿里自有技術OceanBase資料庫。

  技術的重新選擇讓阿里最有價值的一批技術人才,隨時要面對熟練的技術突然沒有用的情況。曾參與IBM小機下線的技術人員樓方鑫曾說過這樣一段話:“去掉一兩個系統的IOE不是最難的,也不能代表成功;通過‘去IOE’提升和鍛鍊團隊的能力,協調好運維和開發團隊間的工作才是關鍵。”

  小機,再見!

  淘寶是首先推行“去IOE”戰略的業務部門之一。“去IOE”之所以能從淘寶開始,是因為淘寶擁有阿里最大的Oracle資料庫,成本和技術壓力最大。

  淘寶技術專家餘鋒曾說:儘管Oracle資料庫效能穩定,但是對於淘寶來講,Oracle資料庫本身已經不能滿足業務需求。淘寶的資料庫專家從IT前端逐漸過渡到後端,弱化Oracle資料庫,把“Oracle資料庫+IBM小型機+EMC儲存裝置”切換到“MySQL資料庫+PC Server的模式”。到2013年7月10日,淘寶重中之重的廣告系統的Oracle資料庫全部下線。

  2013年5月17日,阿里集團最後一臺IBM小機在支付寶下線時也使阿里“去IOE”運動越發受到關注。

  在“去IOE”的程式中,支付寶首席架構師程立有自己的苦衷。支付寶有阿里最後一臺IBM小機,這臺小機管理著支付寶使用者的所有資金。如果這臺小機出現故障,使用者將會無法支付,甚至連自己賬戶裡有多少錢都看不到了,後果將不堪設想,因此對這臺小機的任何改動都要確保萬無一失。

  去除支付寶IBM小機的第二個難點在於,去除小機的前提是實現技術架構分佈化,為支付寶IT遷移到雲平臺打下基礎。但將技術架構從集中變成分佈後,很難保證強一致性,比如客戶A給客戶B轉了一筆錢,不能出現A的錢扣了,但B的錢沒增加的情況。如何在一個分佈的系統中保證交易處理的一致性是一個要攻克的技術難題。

“在王堅博士梳理整個阿里技術架構的時候,支付寶曾經是他‘去IOE’最大的一個‘障礙’”程立向《商業價值》記者說道。“我們必須要保證每天處理的大量資金,一分錢都不能錯,一筆都不能差。”出於謹慎,程立和團隊在去掉支付寶系統中其它所有的IBM小型機後,還保留著這臺小機管理最重要的賬戶資金。”

  時間回溯到2012的“雙十一”大促的凌晨,很多消費者不斷點選支付按鈕,卻常常看到支付寶的排隊頁面。消費者以為支付寶系統崩潰了,實際上,當時是因為支付寶僅存的這臺小機的承載能力有限,在高峰交易期,系統只能對來不及處理的請求進行排隊,這種排隊帶來的延遲產生了巨大的使用者體驗障礙。

  “雙十一”的痛苦經歷,讓程立最後下定決心去掉這最後一臺小機,最終,支付寶技術團隊設計出了基於網際網路技術的分散式交易處理方案,通過一次完美的專案執行去除了支付寶、同時也是阿里的最後一臺IBM小機。

  2013年的雙十一是程立經歷過的最輕鬆一次“大促”,再也不擔心有任何技術節點會制約業務的發展了。

  一臺超級計算機

  在阿里進行“去IOE”同時,另外一項重要的技術研發也在同時上演。2008年10月24日,飛天研發啟動。“飛天”是什麼?飛天是阿里的大規模分散式系統,幾乎等同於整個阿里雲的整個技術體系。

  技術網站部落格園對飛天——這種分散式技術有一段生動的描述:當你只有六七條魚的時候, 一個小型魚缸就夠了;可是過一段時間新生了30多條小魚,這個小缸顯然不夠大了。如果買一個大缸,把所有水草啊、佈景、加熱棒、溫度計都從小缸裡拿出來,重新佈置到大缸。這個工程要花費很多時間,尤其水草,糾結在一起很難分開。分散式系統可以幫你在這個小缸旁邊接了一個同樣的小缸,兩個缸聯通。魚可以自動分散到兩個缸。幫你越過複雜的系統擴建過程,省掉了很多時間和裝置成本。

  阿里舊的“IOE”架構,本質上代表著基於傳統高階裝置、大型資料庫等軟硬體的集中式架構。陳舊集中的技術無法應對阿里爆炸式業務增長,如果在IT系統中有一點出現問題,整個架構都面臨危險。飛天這種分散式系統集中大量的通用伺服器在一個系統中,比單個的大型集中式系統執行速度更快。而且,把計算能力分散到眾多機器上,單個節點的故障只會影響一臺機器,其它機器可以照常工作。

  2013年3月,阿里技術保障部給公司高層突然發信一封:“雲梯1要撞牆了!”雲梯1是阿里內部另一個基於Hadoop的分散式叢集系統。保障部的員工發現按照現有資料增量和未來業務增長的情況,阿里的儲存和計算能力將在3個月內達到瓶頸,資料業務面臨停滯,必須將飛天系統快速擴建起來。

  飛天的快速擴建要克服很多難題,國內有大規模分散式系統經驗的人不多,阿里的技術團隊裡只有少數做過或用過分散式系統,所以整個研發的過程是一個探索學習的過程,只有遇到實際的問題,團隊才會對工程上的難題有所領悟。

  其次,在系統設計的時候,工程師會設定相應的工作場景、硬體環境的完備性。但在實際生產環境下,各種硬體環境、引數配置,往往會打破設計時的假設,因此總是會碰到各種問題。在解決這些問題過程中積累的經驗,顯然不是教科書上可以學到的理論。這個超大計算機也有自己的軟肋,她要比單個伺服器的可用性和可靠性要高很多,才能保證服務“永遠”不中斷,資料“永遠”不丟失。

  經過4個月的不懈努力,飛天資深技術總監唐洪和他的團隊將5000臺飛天叢集部署成功。阿里成為國內首個單叢集達到5000臺規模的公司,在此之前,全球也只有Google、Facebook等頂級公司可以按照5000臺機器來劃分叢集規模。

  飛天能做什麼?用唐洪的話來說:“它有100PB級別的硬碟,可以存放幾百億的網頁;可以給幾十萬的使用者,每人提供幾百G的儲存;再或者是擁有了一臺萬核以上的超級計算機,普通計算機一個月需要完成的渲染作業在這個計算機上只需要幾分鐘就可以完成。”

  “雙十一”雲備戰

  “去IOE”與“飛天5K”技術成功後,阿里集團內部所有的重量級業務都已遷移到雲端計算平臺上。

  “聚石塔”、“聚寶盆”、“阿里金融”的大資料研發以及YunOS智慧移動作業系統等,都執行在阿里雲飛天平臺上。淘寶、支付寶等各業務部門的底層技術也架設在飛天平臺上。阿里金融基於雲端計算,幾分鐘之內就能讓貸款發出,每天處理上百TB的交易資料,而且保證了每一筆貸款發放的計算成本相同。淘寶也基於阿里雲推出電商雲——聚石塔,為“雙十一”服務。阿里雲推出電商雲—聚石塔,為“雙十一”服務。2012年“雙十一”,通過聚石塔,阿里雲支撐了天貓20%的交易額, 2013年這一數字上升到75%。

  2013年“雙十一”大戰前3個禮拜,天貓技術總監莊卓然接到集團通知:大促結束後,他將要被抽調到無線事業部。對他而言,3年的“雙十一”備戰完美收官,又將迎接新的挑戰。2013年,阿里第5個“雙十一”,天貓和淘寶單日成交額達到362億元(根據招股書資料),網站PV過百億,76%的商家處理工作在聚石塔雲端計算平臺完成,且無一漏單,無一故障。支付寶成功支付1.88億筆,最高每2分鐘支付79萬筆。用莊卓然的話:“瘋狂業務資料的背後,是對阿里技術團隊一次整體大閱兵。”這場閱兵檢驗了阿里“去IOE”和雲端計算的成果。

  3年備戰“雙十一”,莊卓然每年都重複著高效的工作時間表。5月底,投入產品和技術準備。籌劃新的突破點和創意同時啟動,投入到一些較長週期的研發工作。8月底,真正的考驗來臨,衝刺時間段,他每晚習慣性要到兩點多才能睡著。有時候,想一些技術難題覺得有突破時,一睜眼就到天亮。莊卓然自己形容自己的工作狀態像“精神分裂”一樣,左腦思考的是系統的穩定性建設,右腦不停地找尋當前系統的命門和瓶頸。每一次大促都是對團隊技術能力的考驗。

  2011年和2012年的“雙十一”前夜,莊卓然和技術團隊都非常不踏實,即便該做的技術準備都做了,但面對“雙十一”巨大的突發流量,只能盡力保證一個完善的技術機制,抓大放小。“雙十一”的最大難點在於峰值流量一壓過來,系統要扛得住千萬人同時線上和每秒數億筆交易。

  淘寶和天貓的技術體系非常龐雜。每一筆交易都涉及到銀行、商家、淘寶自身和網路等多個系統的處理能力。交易資訊層層傳遞過程中,某一個技術細節執行不到位,交易就可能失敗。比如,當使用者量大到一定程度,系統讓使用者排隊,如果這個功能失效,一連串的上下游系統都會受到影響。淘寶的幾萬臺機器,上千個應用系統複雜交錯,很難實景模擬所有的使用者行為,比如1000萬人同時線上,同時下單。2013年,莊卓然對“雙十一”技術的確定和把握,一部分來源於技術團隊已經能實現在短期內集結一大批虛擬使用者去做壓力測試;另一部分是淘寶天貓後臺和大多數商家後臺已經上雲。

  淘寶、天貓上大概近千萬家商家,其中大部分的商家都有自己的ERP系統。消費者買一個東西需要點選購買,然後進行支付。這個動作會指向兩條IT路徑:一是連線支付寶,保證有錢可以完成支付;另一條則是進入賣家的ERP,賣家需要知道自己是否有庫存,並減掉相應的貨品數量。交易從淘寶或天貓連結到賣家後臺系統的過程中,如果賣家IT系統薄弱,資料交換可能會因為網路等原因不通暢導致交易失敗。

  莊卓然詳細講解了這一過程:“聚石塔提供的雲推送功能在第一時間將交易訂單同步部署進商家的ERP、物流、CRM軟體中,並提供動態彈性擴容和安全保護。消費者下單到發貨、發票列印,所有資訊流轉都在雲上完成。”

  雲上生態系統

  聚石塔只是阿里雲應用的一個側面,阿里長在雲上的商業生態體系已經初步形成。

  王堅曾說過:“阿里雲平臺在內部的程式碼就是飛天。一個平臺的力量有多大,可以造就的東西就有多大,這是過去阿里云為什麼花費這麼大力氣做飛天的原因。”飛天以Web API的方式,向外提供計算、儲存和大規模資料處理等雲端計算服務,建立起龐大的雲端計算生態體系。

  未來的網際網路將成為一個果園,各行各業像是一棵棵果樹,如何為果樹提供良好的養分服務,決定了果園生態的豐富程度。雲端計算就是牽引傳統行業網際網路化的引擎。資料將成為雲生態裡的生產資料,通過強大的計算能力進行實時分析和互動,可以催生出無數新的商業模式。

  在阿里剛剛遞交的招股說明書中寫道:2013年1~9月,阿里雲端計算服務等收入達5.6億人民幣,佔總收入的1.4%,同比增長15.7%,並且已經擁有98萬使用者。阿里雲快速地將阿里和不同行業企業聯絡到一起,比如消費電子、公共衛生、能源管理、媒體、電子商務、電子政務、移動網際網路等。阿里雲客戶中有傳統的網際網路公司,也有移動網際網路公司,比如手遊公司;還有一些傳統企業,比如杭州九陽股份有限公司,這些傳統企業的IT逐漸向雲遷徙。例如,2013年,阿里與美的集團的深入合作,是基於天貓商城、大資料和阿里雲端計算平臺的多維度合作,這種藉助雲和資料的能力,讓傳統企業能與網際網路走向更深的耦合。

  阿里雲還在藉助ISV合作伙伴,幫助更多的傳統企業上雲。2013年,東軟將旗下SaCa、UniEAP等軟體產品部署在阿里雲上;普元推出基於阿里雲的EOS-Cloud平臺,直接在雲上支撐企業軟體開發。這些ISV廠商有大量傳統企業使用者積累,這種深入合作撬動了一批傳統企業上雲。2014年,5月8日,阿里雲宣佈香港資料中心正式投入使用,阿里雲正與Amazon AWS、、微軟Azure展開正面競爭,阿里的雲生態體系部署已經蔓延到國外。阿里雲業務總經理陳金培認為:“所有的產業競爭都是生態系統的競爭,你要麼依存於一個生態,要麼自己發展出來一個生態。”馬雲搭建的基於資料和雲的生態,已初步形成。

  2013年初開始,阿里將其戰略調整為“平臺、金融、資料”三大業務。雲端計算是金融、資料的基礎。2014年春,馬雲的內部信件再次明確了阿里的未來戰略:走向啟用生產力為目的的DT(data technology)資料時代。馬雲的策略是讓資料、雲端計算成為中國商業的基礎設施。

  阿里巴巴技術發展大事記

  2007年—— 以網際網路為平臺的商務管理軟體公司阿里軟體成立。

  2008年—— 王堅加盟阿里成為集團首席架構師;

  阿里巴巴集團研發院成立;

  飛天研發工作開始。

  2009年—— 年阿里軟體與阿里巴巴集團研發院合併;

  阿里雲端計算成立,在杭州、北京、矽谷設研發中心和運營機構;

  Oracle產品構建的RAC叢集成為國內最大的資料倉儲;

  淘寶擁有第一個分散式計算系統Hadoop叢集,規模300臺。

  2010年—— 阿里雲第一個雲端計算機房啟用;

  阿里巴巴資料量大爆炸的一年,RAC叢集不能滿足業務發展速度,遷移到Hadoop。

  2011年—— 阿里雲官網上線,“飛天”開始對外提供雲服務;

  阿里巴巴雲智慧手機作業系統雲OS正式釋出。

  2012年——“冰火鳥”啟動建立支援集團資料化運營,自主研發的分散式計算平臺對全集團

  提供服務。

  2013年—— 阿里雲端計算與萬網合併為新的阿里雲端計算公司;

  “飛天”叢集達到5000臺,100T資料TearSort演算法30分鐘完成,比當時的世界紀錄快2倍以上。

  2014年—— 阿里雲釋出移動雲平臺-聚無線;

  香港資料中心正式啟用。

  相關文件:淘寶技術發展

相關文章