手機淘寶構(gòu)架演化實踐_第1頁
手機淘寶構(gòu)架演化實踐_第2頁
手機淘寶構(gòu)架演化實踐_第3頁
手機淘寶構(gòu)架演化實踐_第4頁
手機淘寶構(gòu)架演化實踐_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、2014年12月19日20日,ArchSummit北京2014大會順利舉行。“移動互聯(lián)網(wǎng),隨時隨 地”是非常火爆的一個專題。阿里無線事業(yè)部技術(shù)負責人莊卓然(花名南天)任出品人。來 自阿里無線事業(yè)部的高級專家李敏分享了手機淘寶架構(gòu)演化實踐李敏主要負責淘寶無線客戶端和無線網(wǎng)站基礎(chǔ)服務(wù)、購物主鏈路的架構(gòu)、研發(fā)方面的工作。 從09年開始參與手機淘寶研發(fā)團隊的組建和線上產(chǎn)品研發(fā),先后負責過無線部門的社區(qū)、 會員、營銷、交易等多條產(chǎn)品線的技術(shù)工作,構(gòu)建和發(fā)展了阿里無線技術(shù)體系中包括交易鏈 路、百億級別高性能API網(wǎng)關(guān)、WebApp平臺等多個重要技術(shù)產(chǎn)品,經(jīng)歷和見證了阿里巴 巴無線從開始之初到成為日活上億級

2、別電商應(yīng)用技術(shù)變遷和積累。本文即根據(jù)李敏的演講整理而成。發(fā)展階段從2009年開始,DAU從100萬增長到超過1億,面臨的問題、包括研發(fā)支撐所需要解決 的事情各不相同。在用戶量和業(yè)務(wù)復(fù)雜度的線性遞增下,架構(gòu)也進行了相應(yīng)的演進。如下圖 所示,具體可以分為四個階段:走過的路手淘在用戶量和業(yè)務(wù)復(fù)雜度的線性遞增下統(tǒng)一API網(wǎng)關(guān)&OOW DAU1000W DAU10QW DAUW+I + AAIIHTML5單一服務(wù)端-1。個麴上應(yīng)用統(tǒng)上應(yīng)用其04WAP 2.0HTML模板DAU多個IDC全集團業(yè)務(wù)RPC解耦HTML5第一階段,手淘的前身WAP網(wǎng)站,業(yè)務(wù)初立、變化快,需要快速發(fā)布,采取HTML模 板和單一應(yīng)

3、用,最大程度滿足快速發(fā)布和修改的需要;甚至不需要改動后端的業(yè)務(wù)代碼, 在前面的模板上做一些修改就可以了。第二階段,DAU的快速增長,WAP/Android/iOS多個平臺的業(yè)務(wù)起來了,需要在多個 平臺上進行快速的業(yè)務(wù)復(fù)制和業(yè)務(wù)管控,統(tǒng)一 API網(wǎng)關(guān)出現(xiàn)。第三階段,DAU進一步增長,線上系統(tǒng)越來越多,業(yè)務(wù)的多樣性需求更多的體現(xiàn)出來, 基于HTML5的一整套解決方案上線,更多的HTML5和Native混合的業(yè)務(wù)形態(tài),API 網(wǎng)關(guān)進行進一步優(yōu)化和擴展,更方便的接入方式。第四階段,當DAU達到100M的時候,全集團的業(yè)務(wù)都需要在手淘透出,API網(wǎng)關(guān)被 部署到更多的IDC機房,如何更有體系化的進行有效的

4、研發(fā)、接入更多業(yè)務(wù)、并進行更 有效的業(yè)務(wù)監(jiān)控,需要更加體系化的架構(gòu)治理。API網(wǎng)關(guān)做WAP的時候沒有所謂的API網(wǎng)關(guān),為什么要用API網(wǎng)關(guān)呢? 隨著應(yīng)用數(shù)量的增多,每個應(yīng)用分別暴露的API出口很多,修改的話邏輯很復(fù)雜,這時候 應(yīng)該引入一個統(tǒng)一的網(wǎng)關(guān)。但隨著DAU的增長,API網(wǎng)關(guān)會成為一個單點。開發(fā)團隊在中間做了很多技術(shù)和架構(gòu)上的 努力,主要有幾個關(guān)鍵點。一是后端接入很多應(yīng)用,其實API網(wǎng)關(guān)只是通路,理論上不存 在調(diào)用的上限,只要內(nèi)存夠大,包括網(wǎng)卡的流量夠的話都可以上來。二是有必要的機制做到 寬闊的調(diào)用網(wǎng)關(guān)。還有一點,當后端業(yè)務(wù)要經(jīng)過API網(wǎng)關(guān)時,其實現(xiàn)在業(yè)界很多都是典型 的RPC的模式,RP

5、C的模式有一個繞不開的問題,就是可能要設(shè)定一些東西,這時后端服 務(wù)跟API會有一定程度上的耦合?,F(xiàn)階段要接入服務(wù),后端服務(wù)器隨時都會變化,不可能 后端服務(wù)變化的時候都對API做相應(yīng)的發(fā)布,這是不現(xiàn)實的。所以有一套自己的RPC機制, 解除了這種強類型的約束。此外,可以在網(wǎng)關(guān)上附加很多功能,比如安全、審計,還有一些日志、審查等。到了現(xiàn)在這個階段,要進行異地部署,很多IDC,這樣的話引入API網(wǎng)關(guān)很可能會帶來問 題。包括今年的雙11或者是雙12,要在多個異地機房支撐手機淘寶的業(yè)務(wù),會有很多API 網(wǎng)關(guān)。云- API網(wǎng)關(guān)EEAPIGmvwmAPI PLATFORM比如說像APP可以在中心網(wǎng)關(guān)上面詢問,

6、應(yīng)該去哪個真正的API網(wǎng)關(guān)。然后中心API網(wǎng)關(guān) 會告訴它結(jié)果,它再連接到所在地的API網(wǎng)關(guān)上,然后再向后端API發(fā)起調(diào)用,所有API 的服務(wù)網(wǎng)關(guān)都受管控中心統(tǒng)一管控。比如說增加一些新的功能,上線一些新的API,包括一 些引流、切換,這些指令都會在管理平臺上向各個API網(wǎng)關(guān)發(fā)送。手機端I.Bundle去年下半年,開發(fā)團隊對整個手機淘寶的架構(gòu)做了比較大的調(diào)整,如下圖所示,左側(cè)是運行 時的架構(gòu)分布,右側(cè)是工程代碼級別的分布。在運行的時候,其他的業(yè)務(wù)團隊提供的都是一 個個的業(yè)務(wù)Bundle,這是可部署的單元,包括UI、服務(wù)和標準中間件的調(diào)用代碼,下面有 一個總線程,負責管理和開發(fā)好統(tǒng)一的UI服務(wù),包括

7、消息服務(wù)的總線。再下面是運行容器,上面跑的的是所有的Bundle的東西,對應(yīng)運行時的東西,右側(cè)是真正在開發(fā)時候的結(jié)構(gòu)。 比如說聚劃算,它要開發(fā)它的業(yè)務(wù),就做一個單獨的工程,然后去開發(fā);它只用開發(fā)自己的, 開發(fā)到差不多的時候,就將其代碼打成一個Bundle提供過來,然后一起打包發(fā)出去。端-BundleBundle (deployable unit)ServicesRuntimeBus (III 8 Service & Message2.WebApp下圖是現(xiàn)在手機淘寶上關(guān)于HTML5的整體框架圖。手機淘寶上的方案大致分為兩部分,中 間那一部分是手機淘寶自己開發(fā)的HTML5的運行容器,它負責在上面跑

8、各種各樣的 WebApp,在線上有一個統(tǒng)一發(fā)布管理系統(tǒng),它可能對性能進行檢測,包括CDN是否符合 規(guī)格,HTML本身有沒有異常等情況,經(jīng)過這些必要的檢測,包括審查之后,它統(tǒng)一發(fā)到 CDN上。容器本身其實也會接受運行時的信息,容器接收到這兩邊的指令之后,它自己會 做一些更新配置,也可能會裝載運行,從線上系統(tǒng)下發(fā)新的WebApp。此外,還可以運行 WebApp或者是做URL的導(dǎo)航攔截,甚至做一些交互。端-WebApp二抽料底余WindVaneContainer(CANVAS PidginWebApp職務(wù)找由#提供H5避源發(fā)布管理統(tǒng)一平臺和可滿足H5時NM典能力需求的逝行容器,動態(tài)這堆,讓HS更好的

9、落地3.PackageApp這是今年新的建設(shè),整個系統(tǒng)是基于前面整個體系來做的,稱之為PackageApp。端-PackageApp費源請求HTMLrj.C&.tMaURL牌異步更制橫塊WebApp 發(fā)布曾理平臺莊布童*JS/CSS/HTMUBP J這個跟前面最大的區(qū)別就是讓用戶感知不到前面同步下載的過程,大概的做法是:把HTML5 以及WebApp在發(fā)版之前先做一些預(yù)知放到客戶端里面,前面會做兩件事情,首先按照原 來的邏輯運行,其次就是在右側(cè)的藍圖里面,它會去做一些UI的攔截,發(fā)現(xiàn)用戶點擊的icon 進去之后,整個URL是符合用戶規(guī)范的,它會啟動檢測機制去檢查線上是不是有新的版本 需要下載,

10、如果有的話會啟動異步更新模塊,從CDN上拉取新的WebApp版本,否則會走 到原來的地方,最后既不影響用戶去使用WebApp,又能把自己最新的版本更新到所期望 的版本,這由統(tǒng)一的管理平臺去發(fā)布。在方案設(shè)計之初,還思考了三個方面,首先它是標準的URL,在點擊進去之后是導(dǎo)航的URL, 對于前端工程師來說,他設(shè)計研發(fā)WebApp跟客戶端或者是線上跟HTML5的網(wǎng)站是一致 的。其次,手機淘寶自己的容器,制定了自己的規(guī)范,在底層的容器上面可以實現(xiàn)手淘定義 的規(guī)范。第三,“不同網(wǎng)絡(luò)、全量、差量更新,這點很重要,在移動互聯(lián)網(wǎng)場景下,到底要 發(fā)起幾條鏈接拉取資源,在WIFI下怎么拉取資源,其實都是不一樣的。在

11、不同網(wǎng)絡(luò)下面, 對策都不太一樣。下面是采用PackageApp后業(yè)務(wù)模塊LoadTime對比圖:端 PackageApp業(yè)務(wù)模塊LoadTime對比圖PackageAppH 非PackaeApp支撐體系除了前面介紹的內(nèi)容,比較大的電商App,還需要一個很完備的支撐體系。如果沒有的話, 在線上運行的情況是不可感知的。手淘在不同的維度也做了很多支撐的工具。研發(fā)支撐在研發(fā)支撐上面,像傳統(tǒng)的Reivew代碼,特別是做客戶端的同學幾乎都會做統(tǒng)一的UI庫, 大家會設(shè)計模板,比較典型的,會有所謂的日常預(yù)發(fā)、線上染色等等。它的集群數(shù)量跟能夠 進來的用戶是很有限的,通過這個環(huán)境來確認所開發(fā)的代碼發(fā)布到線上可能會

12、有什么問題。 一套代碼經(jīng)過預(yù)發(fā)之后再發(fā)布到線上去,最后有一個染色環(huán)境,比如說用戶打電話反饋遇到 的問題,比如說下單下不了或者是搜索無結(jié)果,這時會有一個染色集群,把用戶定位到染色 集群上面,對用戶專門進行一些分析,現(xiàn)在還沒有做到直接在用戶機器上做調(diào)試,但是用戶 到了染色集群上面,整個調(diào)用的鏈路會剝離出來,比較好分析用戶到底發(fā)生了什么事情。測試支撐App的測試很重要,除了比較常規(guī)的單元功能測試,還有很重要的像穩(wěn)定性跟性能,以及自 動化這些都是很重要的。像手機淘寶差不多是一個月左右的時間可能會迭代一個版本。比如 說新的功能開發(fā)會不會影響到老的功能,智能化測試很重要,可能分成兩部分,一部分是線 上所有

13、的API,包括業(yè)務(wù)邏輯是不是正常。另一部分是新寫的代碼會不會有問題,因為前面 架設(shè)了統(tǒng)一的API網(wǎng)關(guān),所以會在網(wǎng)關(guān)這個層面做很多自動化的調(diào)用回歸,構(gòu)造很多正常 用戶的數(shù)據(jù)去測試線上API系統(tǒng)的返回值,包括一些異常是不是正常,來保證線上業(yè)務(wù)邏 輯的正常。在客戶端這一側(cè),則會做很多自動腳本的回歸,保障整個客戶端新做的代碼跟原 來相比沒有什么問題。另外還引入了比較多的靜態(tài)代碼掃描,保證不會出現(xiàn)低級問題。運維支撐移動App的運維支撐跟線上不太一樣。除了常見的性能跟穩(wěn)定性分析,還有針對App的業(yè) 務(wù)監(jiān)控跟輿情監(jiān)控。輿情監(jiān)控這個應(yīng)該是移動App所特有的環(huán)節(jié),大家通過市場去分發(fā), 很多用戶會發(fā)評論,iOS特

14、別明顯,有人說好,有人說不好,安卓更復(fù)雜,特別是國內(nèi)有大 大小小非常多的應(yīng)用市場,不一而足。所以怎么對輿情做一個有效的監(jiān)控,既能通過輿情監(jiān) 控,快速收集問題,也能做一些梳理分析,找到產(chǎn)品或者是性能方面的提升點。4.發(fā)布支撐發(fā)布支撐,其實也是在大的App上面才會出現(xiàn)的,針對一個人群的發(fā)布。傳統(tǒng)的直接是發(fā) 到市場上,大家都收到了。而手淘現(xiàn)在有很多內(nèi)部灰度和外部灰度正式發(fā)布,可能有一些內(nèi) 測版本只發(fā)給阿里巴巴集團內(nèi)部員工,這可以通過自己做的發(fā)布系統(tǒng)來支撐,有比較靈活的 發(fā)布策略調(diào)整:可以圈定一批用戶,也可以選定一個區(qū)域,甚至可以用后臺數(shù)據(jù)做合理的設(shè) 置給特定的版本推送特定升級的版本。如果App發(fā)到用

15、戶手上,結(jié)果發(fā)生了致命的問題,怎么辦呢?其實有兩種方法修復(fù)線上的 問題,第一個是直接替換Bundle,另外就是更小維度的補丁一一熱補丁,現(xiàn)在在安卓上做 的比較多。李敏還分享了一個案例,在上半年有一次大促的時候發(fā)生了一個問題,零點就要促銷了,版 本可能是前天剛發(fā)布給用戶的,那怎么辦呢?替換Bundle也可以做到,但是數(shù)據(jù)下載量非 常大,而且剛發(fā)布不久,這樣對用戶影響比較大,所以選擇了用熱補丁修復(fù),主要是類似于 ClassLoader替換,用JAVA開發(fā)的應(yīng)該知道,主要是用類替換的方式做的。在iOS上也有 一些方案,不過還在嘗試當中??蛻舳吮O(jiān)控可以在分鐘級別確定用戶調(diào)用某個操作的成功次數(shù)、失敗次數(shù)和失敗率,實現(xiàn)對業(yè)務(wù)可用性 的監(jiān)控。輿情平臺輿情平臺是移動App所獨有的。要獲取信息,會從用戶手機淘寶自己填的反饋,利用市場 和微博,實時抓取,然后把內(nèi)容聚合起來,進行熱門詞歸類,篩選出一些熱門的標簽話題做 一些智能分類,分類之后大致知道到底是支付、詳情、退款出現(xiàn)了什么問題,確定問題的重 點之后,可以直接聯(lián)系用戶

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論