1. 程式人生 > >阿里千億級流量移動API閘道器的演進之路

阿里千億級流量移動API閘道器的演進之路

在2018年雲棲大會·武漢峰會的企業研發雲專場中,來自阿里巴巴淘寶技術部基礎平臺部的移動中介軟體基礎服務技術專家高志恆(魯少千)為現場的聽眾帶來了題為《阿里千億級流量移動API閘道器的演進》的精彩分享。在本次分享中,他重點闡述了移動API閘道器的概念,研發效率演進,高可用演進以及運維體系演進。
數十款阿里雲產品限時折扣中趕快點選這裡領券開始雲上實踐吧!
以下為精彩視訊內容整理:

移動API閘道器概念闡述

_11


閘道器是不同的網路之間協議的一個協議適配。顧名思義,移動API閘道器是針對於移動APP開發,在不同的服務之間建立的一個系統。它主要是為不同的服務領域提供的不同的服務入口,簡化其中的複雜性。

_12


不同的公司對移動API閘道器的定義是不一樣的。在阿里,移動API閘道器更多的是承載阿里所有無線業務的一個核心技術設施。同時也是承載著每一年雙十一雙十二這種超大規模流量的一個高效能高穩定的系統。同時,它也是阿里無線所有業務高效研發的一個發動機,它為業務方法提供快速高效套取移動能力的技術解決方案。它包括端到雲整套的網路的深度優化,服務端的API的管理以及安全管控運維等。

研發效率演進

在移動網際網路的發展初期,使用的服務的業務不是特別多,當時為了業務的快速上線,每個人分散的獨立去開發,快速去做各自的業務。
隨著移動網際網路業務的快速發展,這種開發模式暴露的問題越來越多,管理上非常混亂,缺失統一研發模型和標準化,基礎能力重複研發,效率低下。
為了解決這樣的問題,做出了以下一些改變:

統一程式設計模型

_13


將程式設計模型進行了標準化,同時將之前分散在各個地區的服務集中式收靠起來,在閘道器上進行開發,通過閘道器統一去對客戶端提供服務。

統一基礎服務

_14


我們把客戶端端到服務端互動的技術細節體系進行一個很好的封裝,最終行成一個閘道器SDK,來提供給上層業務去使用,通過這種方式就可以通過標準SDK去做很多事情。
就是把原來分散在各個地方需要建設的公共服務能力下沉。通過在服務端和客戶端兩方面去把公共的一些設施下沉下來以後,對研發效率效率會有一個很大的改變,因為所有的業務只需要關注於業務邏輯本身的開發。服務的開發模式也不會像以前一樣亂。
隨著網際網路的慢慢成熟,淘寶有越來越多的業務,從而慢慢的轉向了無限化。由於業務大量湧入進來,導致開發分支衝突嚴重;高頻釋出;穩定性無法保障。
為了解決這個問題,我們把整個閘道器的技術體系進行一個大的改造升級,將整個網關係統推向了一個嶄新的網路時代,一個平臺架構的時代。

大規模平臺研發

_15


通過閘道器的升級,可以實現大規模的平臺化研發。
第一,把業務跟閘道器以服務化的形式拆分到子系統裡面去,將整個系統閘道器和後端業務進行解耦;
第二,引申出一個叫API的概念,將整個服務以API契約這種形式去暴露出來;
第三,建立一個開發測試的平臺,通過這個平臺,可以將APP進行很好的測試。

_16


我們研究出一種新的技術叫動態釋出,原來服務暴露需要經過閘道器釋出。通過這種技術可以實現服務的動態部署,不需要再去進行原來系統級別的釋出。解決了閘道器穩定性的問題。

_17


客戶端在開發過程中,往往需要依賴服務端的服務,測試也是一樣,如果服務還沒開發好的話,就要等到功能開發差不多,才能進行測試。服務端因為任務比較重,就有可能成為專案開發的一個瓶頸。
API契約先行解決了這個問題,建立一個API,根據不同場景,預先設定一些資料,讓整個專案能夠進行並行開發。整個研發效率就能夠大大提高,服務靈活變更,快速生效,能夠支撐上百團隊並行開發。

高可用演進

高可用是指,我們提供的產品與服務能夠高度持續可使用。另外一層含義是指讓使用者能夠更加安全,更好體驗的高度使用。由於會出現APP被反編譯,紅包被刷,流量暴增應用被打垮等問題,無法做到高可用,使用者體驗很糟糕,從而對產品是去信心,對整個業務傷害非常大。另一方面,系統出現問題能否快速恢復,也是急需解決的問題。
產品的高可用可以通過以下手段保障:

安全與限流

_18


針對以上出現的問題,閘道器首先對安全進行加固,然後進行限流。對於安全加固,在端上使用安全保鏢去加固程式,讓別人沒辦法打包或反編譯程式碼。在服務端加強防刷等手段。通過這些措施,就可以保證使用者的安全。
而對於限流部分,當一波大流量過來時,系統仍然能夠正常的提供服務,很好的保證了系統的穩定。
當光纖斷掉的時候,整個系統網路就斷掉了。即使產品做非常好,也沒辦法使用了。那麼就需要用到快速解決故障的系統。在光纖斷掉的時候,把使用者調到其他部分去使用正常的機房,這樣使用者的體驗才會更好。

容災與異地多活

_19


我們首先會根據使用者的維度把使用者分配到不同的機房。在服務端有一個流量排程服務能夠快速的把使用者從有問題的機房調到能夠正常使用的機房。從而使故障快速恢復,分鐘級生效,使用者的體驗也會非常好。
通過這幾方面的保障,即使是在大流量的環境下,使用者的體驗也會更好。

運維體系演進

產品在線上能夠穩定的執行,這是最基本的,同時,我們也要了解產品執行時的狀況。閘道器要承載大規模的系統,需要一個完善的運維體系支撐。
在運維體系還不完善的階段,在交易下跌的情況下,由於不知道是哪個伺服器出了問題,需要人工到線下依次進行排查,因此排除故障所需的時間會非常長,速度也非常慢。 

_20


而完善之後的運維體系,能夠把所有線上的資料統計出來,做多維度報表。然後結合大資料人工智慧對線上的資料進行實時監控告警,快速精確地定位問題,並進行故障分析。

EMAS頂層模型

_21


EMAS頂層模型提供了移動端開發的整套技術體系,能夠快速打造一個類似於手機淘寶級別的APP。例如,天貓、支付寶等等。我們通過產品的形式將EMAS頂層模型共享出來。

_22


上圖為針對企業移動研發問題的解決方案,包括持續交付解決方案,元件化解決方案,跨平臺解決方案,泛質量管理解決方案以及閘道器統一接入解決方案。

_23


如果對EMAS感興趣,上圖為交流群的二維碼,大家可以在裡面進行移動研發平臺的學習和交流。
本文由雲棲志願者小組毛鶴整理編輯。