天天看點

阿裡移動電商背後的技術航母

2015天貓雙11 全球狂歡節剛剛結束,912億的全天成交額再次重新整理了記錄,其中無線占比68.67%,無線交易額高達626億。

美國時間11月16日,infoq英文站邀請到了阿裡無線事業部資深技術總監莊卓然(花名:南天)、阿裡無線進階技術專家徐昭(花名:長恭) 在qcon全球軟體開發大會舊金山站發表演講《alibaba mobile infrastructure at "china scale"》,揭秘手機淘寶這個超級app的技術架構演進,向世界的技術同行分享中國網際網路在無線領域的技術發展。

阿裡移動電商背後的技術航母

以下為現場演講實錄整理

我眼裡的阿裡巴巴

在過去的十年裡,阿裡逐漸影響和改變了中國人的生活方式。在此之前,大家都隻能線上下門店消費,但是現在大家都養成了線上購物的習慣,并且樂在其中。一方面,到目前為止有超過千萬的賣家選擇在阿裡開線上的門店;另外一方面,阿裡建構了中國最大的公共雲計算平台,并跻身世界前三。在中國,阿裡雲目前服務了超過30%的網站和超過50%的中小型企業。

阿裡巴巴是一家國際化的公司,從今年的雙十一就可見一斑。除了把各種海外尖貨帶到國内,我們也把國内的優質商品帶到全世界。成立于2010年的aliexpress,已經發展成為全球最大的跨地域交易平台。除了電子商務,阿裡巴巴在全球的業務還包括金融、物流、健康、娛樂和雲計算。這也是為什麼我覺得把阿裡看做是中國的amazon和ebay是不準确的。如同馬雲所說“如果把亞馬遜或者京東比作蘋果,那麼阿裡就應該是一顆蘋果樹”。我們把自己看做是一個生态系統,是未來生活的水電煤。我們的目标是建立一個開放、透明、合作的商務平台,讓天下沒有難做的生意。

過去兩年,阿裡電商平台中移動成交占比提升了2倍,達到60%以上,這得益于我們在移動和系統架構上做了很大的改造。是以,今天主要介紹我們的電子商務作業系統在移動環境下面的演進,以及這個架構是怎麼應對pc時代前所未有的挑戰。整體來說會分為四個部分:用戶端的容器化架構、移動網絡管道架構、雲服務架構和資料架構,由于時間的限制,我們将更多的闡述前三者。

7年前,雙十一在中國還被戲稱為光棍節,但在2009年,阿裡巴巴第一次決定在這一天舉辦購物促銷,把這個日子變成了世人矚目的購物狂歡節。

5天前,我和團隊剛剛經曆了第7年的雙十一,這一天阿裡巴巴的交易額約143億美元(912.17億人民币)。去年黑色星期五期間的全美總交易額是114億美元(包括了線下和線上所有的電商公司的銷售總額),而雙十一産生的143億美元,僅僅是阿裡巴巴電商平台一天的交易額,整個狂歡覆寫了200多個國家和地區。全社會共同參與,把平凡的一天變成全球狂歡的節日,這就是阿裡巴巴生态的力量、網際網路的力量。

阿裡移動電商背後的技術航母

手機淘寶

手機淘寶作為阿裡集團移動端的“航空母艦”,近兩年發展非常迅猛,使用者量增長接近10倍。在2015雙十一這天,我們的無線端成交占比高達68% 。在高峰期,更有超過4500萬人同時線上,每秒14萬筆下單;今天我們擁有超過3億的月活躍使用者,是全球最大的消費類移動app。而這些,都對我們的系統能力提出巨大挑戰。

下面給大家分享一個典型使用者在手淘的一天。

阿裡移動電商背後的技術航母

移動架構的反思

阿裡巴巴打造的不是一個軟體系統平台,而是一個電子商務作業系統。這樣的電商作業系統,支撐了過去10年的快速發展。同樣,我們在移動端也在重新思考如何繼續更新,如何在手機app中完成生态建設。

移動網際網路不僅僅是傳統網際網路的延伸。這個共識一方面來自于手機終端的強大特性對産品和商業模式産生的“破壞式”影響,另一方面來自于技術的變化趨勢。

在web的時代,我們說bs架構,通常也可以了解為是cs架構的一種變體。隻不過在client端,我們運作在browser這樣一個容器環境中,通過穩定的寬帶網絡接入,通過html這樣簡單、透明的協定與服務端進行通訊。由于浏覽器隻提供了非常簡單的能力接口。是以,用戶端上隻有非常薄的一層,隻做渲染的工作。而在這裡工程師的主要工作是在集中解決相容性的問題。 而所有的邏輯計算和我們所有要解決的核心問題,擴充性、伸縮性、穩定性、性能等等,其實都集中在後端。

随着個人計算機計算能力的發展,前端技術像ajax、angular這樣的技術如雨後春筍般冒出,我們進入web2.0時代。但這個時候雲和端之間的邊界并沒有發生本質變化。

在移動時代,移動裝置的計算能力發展的越來越迅猛。更重要的是,移動作業系統将移動裝置上百個sensor的能力暴露了給上層的應用,使得我們能獲得比在broswer裡更強的能力。這樣app側就能夠做到更多的以前在browser無法做到的事情。是以,網際網路發展到今天,到了移動網際網路的時代,我們真正意義進入到了一個富用戶端時代,之前簡單清晰的雲端界限被徹底的模糊。 

在這個階段,我們原來談論的很多架構問題,擴充性、隔離性、穩定性、性能等很多問題就不在僅僅隻是服務端的問題,用戶端也需要開始從架構的次元來思考這些問題。同時雲端之間通訊的簡單的協定,穩定的通道,也在發生了很多的變化。移動網絡随時随地需要接入的特點,也對我們的基礎架構提出了更高的要求。接下來我們就展開看一下這裡的差別。

rethinking mobile architecture-夾心面包的尴尬

  但這個問題的解決之道并不像服務端。在這個過程中我們全面反思,大家看到這張圖裡面我們用了一個形象的比喻來展現傳統的服務端軟體。最下層是作業系統,通常是linux,最上層是我們的業務功能和服務。在服務端架構,我們很習慣用增加一個架構層次的方式來解決問題。例如緩存層、資料通路層等。我們在架構上按照自己的意願去搭建不同層次的銜接環節,使架構具有足夠的靈活性和擴充性。即使堆成這個樣子,它依舊是非常合理的。

阿裡移動電商背後的技術航母

而移動app架構則是一個完全不同的場景。我們必須回到遠古的cs架構時代,一個喪失web靈活性的時代,因為所有功能都必須內建到一個app裡面。

我稱之為“看上去簡單,但實際上卻非常尴尬的夾心層“ 。

阿裡移動電商背後的技術航母

是以,我們需要有一個優雅的用戶端架構設計,讓我們能夠重拾以前web互聯時代的能力。在這種背景下,我們建構了手機淘寶這樣一個能夠支撐電商生态系統的用戶端架構。概要來說,設計理念可以為總結如下幾點:

設計時的隔離性。這個架構必須具備設計時的隔離性,這樣我們在開發、打包時才能夠最大化并發能力;

運作時的隔離性。這個隔離性作用在用戶端,主旨在于提高端側可靠性。我們必須確定單個子產品的故障影響範圍内斂到自己内部,不會引發整體crash。

動态渲染能力和部署能力。這個架構必須具備一定程度上的運作期調整和動态部署能力。在這個過程中,我們建構了一個速度更快的類html5渲染引擎;同時,我們也實作了一個私有的容器,支援子產品的動态加載和更新。坐擁這兩大利器,線上問題的修複和新子產品的自動更新都脫離了版本釋出的依賴。不幸的是,由于appstore和googleplay尤其是前者較封閉和嚴苛的稽核制度,我們的動态部署能力常常無法施展,盡管在中國的安卓應用市場上已得到充分的使用。

最大力度的相容性保證,以確定我們在系統版本更新過程中不出現整體的陣痛。

整體的架構反思過程中,我們重新定義了用戶端和服務端(雲端)的邊界。一旦确立這樣一個合理的架構,就能保證我們的移動app在相當時間内,持續高效的支撐業務發展。 

challenge in mobile architecture -移動架構的挑戰

另一個挑戰來自于不穩定的移動網絡環境。pc時代,我們通路網站的接入條件是相對恒定的,是以在開發時很少考慮網絡對于使用者體驗的影響。

但是移動app則不然,尤其是在中國,基礎的移動網絡環境并不好,而且我們有很多使用者的通路是發生在地鐵、公共汽車這樣的環境下,移動基站的頻繁切換進一步增加了網絡的不穩定。從手機淘寶的資料可以看出,我們每天活躍使用者中有15%來自于類似2g這樣的弱網環境。如果端到雲的連接配接不穩定,有高延時,那麼所有的使用者體驗都無從談起。

基礎網絡的效率就像一輛列車,時延是火車的速度(啟動時間),而帶寬就像火車的車廂裝載量,整個傳輸的實體鍊路就像火車的鐵軌。我們面對的移動網絡條件非常複雜,既有高鐵這樣先進的傳輸管道,也有不少老舊緩慢的綠皮車還在服務很多使用者。我們的目标很簡單,就是想讓所有使用者都能在手機淘寶獲得流暢的體驗,不論你坐的是“高鐵”還是“綠皮車”。

下面這張圖,能夠讓大家更加直覺的了解中國的移動網絡環境。它描述了從使用者到idc的端到端的路由情況,不僅資料傳輸耗時長,而且丢包率高,同時安全性也相當糟糕,dns劫持、内容劫持在中國就是家常便飯。

阿裡移動電商背後的技術航母

是以,我們在改善網絡通道上做了很多的事情,探索突破營運商基礎網絡的局限性,力争為使用者創造極緻的購物體驗:

減少網絡互動:使用更高效的通訊傳輸技術,提高了連接配接複用,減少roundtrip次數;

降低流量:通過更高效的壓縮技術和同步技術減少了網絡的流量;

更安全:在不降低體驗的基礎上通過對tls1.3的優化提高資料的安全性;

更穩定:更靈活的排程系統實作異地多活,縮短故障切換的時間。

 阿裡的無線技術實踐

以上整體介紹了阿裡對移動時代架構重新思考的過程。基于這些思考,我們對架構演進的方向提出了以下幾個核心要求:

隔離性:傳統的移動app的開發和內建方式并不适合企業級開發。一個具備很好隔離性的子產品化架構是大規模并行開發的基礎。

動态性:網際網路追求唯快不破,從架構上将我們希望能夠在富用戶端時代同樣也能保留web的輕盈和靈活。動态性是很重要的前提。

極緻的網絡體驗:全雙工的接入平台保障了接入層的伸縮性和穩定體驗,不管使用者在何種網絡環境下都能擁有順暢的體驗。

相比pc時代,移動開發非常複雜。使用者既想要一個驚豔的體驗,又期望安裝包盡可能小。那麼開發者們就既要具備如web時代的輕量級開發部署能力,又要能擷取到native的能力、性能和擴充性。

阿裡移動電商背後的技術航母

平台級産品的并行開發和獨立部署架構

一個好的架構需要支援并行的開發、獨立的部署,這樣才能夠滿足靈活多變的業務增長。同時,發揮航母級的平台優勢,支撐更多元的用戶端應用,産生規模效應,拓展商業邊界。是以,我們的解決方案是在native平台(準确來說是android)上建構一個隔離性的架構,在此之上,功能盡可能的切割的越小越簡單越好;同時,在不損失native性能和能力的前提下,我們也引入了更多的web特性到移動開發中來。

阿裡移動電商背後的技術航母

我們的用戶端容器架構設計的原則是“everything is a component”,在android平台上,基于我們的隔離化容器架構設計,我們既可以提高在內建期的多團隊協作效率,又收獲了在運作時的靈活部署。通過把龐大的工程拆分成一系列的獨立服務,以及我們具備的容器自更新能力,就不需要同時編譯和內建所有的功能子產品。一旦一個子產品完成了測試,我們就可以按需對他進行更新。另外,我們的app還具備線上可熱修複的能力。

阿裡移動電商背後的技術航母

跨平台的思考引發了靈活性(weex)

另一個殘酷的事實是,我們所有的功能需要在android、ios和h5上重複實作。當我們面對用戶端包大小,方法數的限制的同時又需要支援200+的功能更新、多平台持續傳遞、覆寫度、容錯、熱修複等等龐雜的事情 。是以在裝置和os的限制下做伸縮,我們需要一個超輕量靈活的解決方案,能夠基于某個高度重用的東西上進行低成本的并行開發、快速釋出。

weex就是我們想要的殺手锏,開發者可以通過一套跨平台的代碼建構ios和android的app。在建構應用ui的時候,開發者可以使用我們的基礎庫,這個庫抽象了不同平台之間的差異性。開發者面對的dsl是基于一個叫做vue.js的輕量級js庫,相對于react的jsx文法,這是一個更加面向元件的、腳本樣式分離的語言,對于開發者來說更加友好,更利于開發者和設計師之間的協作。jsbundle可以所見即所得的進行及時更新,v-dom的抽象層提供了跨平台渲染能力,同時也具備native元件優雅降級的能力。

阿裡移動電商背後的技術航母

這套方案跟業界相似方案的效果對比如何呢? 首先我們選擇了一個标準場景:渲染一個定制化的圖檔清單,展示200+的頁面。

下圖是我們實際測量的資料情況,包含渲染時間、記憶體消耗、cpu消耗和幀率。我們并不是想通過這個圖來強調我們比所有其他方案都好,因為場景不同所有效果也會有所不同,我們想說的是能通過這麼一個方案取得性能和動态性的雙豐收。

阿裡移動電商背後的技術航母

靈活高效、安全穩定的網絡排程服務(accs)

接下來,我們需要解決的是端到端的伸縮性。随着手機淘寶業務的擴張,我們的活躍使用者也在不斷的增長,為了提供更好的端到端的能力,我們必須提高連接配接服務的品質。這得益于在以下四個方面的努力:

作為服務消費方,我們不能決定網絡的延遲和帶寬,但是我們可以努力減少round-trips。

我們建立了httpdns服務并緩存在本地,減少用戶端dsn檢索的時間損耗;而且基于tls1.3進行了改造,在保障鍊路安全的情況下性能得到的較大提升。

阿裡的後端系統采用多資料中心多活的架構部署方式,是以無線網關需要具備正确的、靈活可變的使用者排程能力。

我們把網絡能力整體封裝成了标準的sdk,一方面以確定我們的app群能夠一起享受整個優化的收益,另一方面也確定了h5頁面能夠使用到native通道的能力。

阿裡移動電商背後的技術航母

在闡述完用戶端架構和網絡架構之後,我們再次把目光聚焦到後端服務上。2010年左右,我們開始考慮多資料中心的事。一方面,我們做到了服務和資料的水準擴充。随着業務規模的不停增長,我們的應用伸縮規模也越來越龐大,單點不穩定性帶來的風險也成倍放大。另一方面,部署的應用越來越多,覆寫電商、物流、大資料等等,而一個城市能夠提供給我們的空間畢竟是有限的。更加緻命的是,如果單機房發生故障,這對于電商來說基本上不可接受的,是以我們在2011年開始進入雙活乃至多活的改造。

阿裡無線技術的開源計劃

架構是非常值得分享和讨論的,好的技術架構能夠持續支援偉大的商業夢想。是以今天阿裡具備的無線能力,很多都将會通過開源或雲服務和外界共享,希望回饋整個社群。同時也希望我們的技術思考能夠給大家帶來啟發。大家如果感興趣,歡迎持續關注我們的github位址。

阿裡移動電商背後的技術航母

移動時代知識dt時代的過渡

技術發展将從面向生産效率的it時代進入面向智能的dt時代,資料最終将成為水電煤一樣的基礎設施 。在這樣一個背景下,我認為移動時代隻是一個過渡階段,這個階段我們的所有工作其實都專注在三件事上:

首先,各種裝置最終都會具備聯網的能力 ,我們的基礎設施要做好準備。這就是為什麼我們會做accs這樣的億級無線雲平台,打造強大的無線基礎設施,迎接萬物互聯時代的到來。

其次,雲和端的界限勢必會經曆一個越來越模糊再到重新清晰的過程。過去w3c和浏覽器廠商付出了大量的努力,傳統網際網路是一個開放分享透明的生态。現有的移動終端平台其實并沒有為超級app做過任何準備,反而很多時候限制了超級app的發展。這個過程我們也很願意參與進來,讓移動網際網路也能夠更加開放分享和透明

最後,終端不應該僅僅是被動的資料消費,而更重要的是成為更多元度的資料生産者。

連結一切,雲端一體,分享一切,讓我們一起努力迎接一個更佳智能的未來。

阿裡移動電商背後的技術航母

莊卓然 擁有10餘年的網際網路研發和管理經驗,是見證并主導阿裡業務架構演進的當事人之一。他于2009年加入阿裡巴巴,先後在淘寶、天貓負責營銷、會員、交易、導購等系統的架構和研發工作,經曆了淘寶從簡單應用到承載數億使用者的分布式服務化業務平台的技術演進過程。同時,他還是2011-2013年雙十一的天貓技術負責人,持續推動雙十一的産品架構演進、穩定性改造和性能優化等研發工作。2013年轉戰移動研發戰場,帶領團隊專注于手機淘寶和移動基礎平台的研發建設。

阿裡移動電商背後的技術航母
阿裡移動電商背後的技術航母

徐昭 2012年加入天貓成為技術核心,前後帶領過天貓賣家、導購詳情等多支技術團隊,親身打造并見證雙11成為電商行業的重要節日。現任手機淘寶賣家生态團隊技術負責人,專注在無線整體架構、大型複雜移動應用建構架構及無線技術開放等領域,同時關注新技術和開發模式在移動網際網路産品中的演進和落地。