摘要:
在本次螞蟻金服與阿里雲聯合舉辦的在線金融技術峯會上,嘉賓心武與你們分享了支付寶APP近幾年在無線網絡方面所作的實踐。面試
本文整理自心武的分享,在這個萬人低頭時代,對於大型APP而言其無線網絡性能足以決定其市場地位,在應對業務差別化需求,複雜的無線網絡環境等問題上,支付寶APP是如何保障無線網絡性能的呢?安全
首先看一個典型案例:用戶用完餐後,使用支付寶掃碼進行支付,但因網絡不穩定致使數次支付失敗,最終只能選擇現金結帳。不少用戶會對這樣的案例有必定的感觸,可能在平常生活中常常遇到,而這對於無線網絡的技術研發人員而言,卻沒法容忍的。設想一下,若是一個APP的無線移動網絡失敗率下降千分之一,會產生怎樣的效應?網絡
若是以天天一億筆無線交易進行計算的話,失敗率下降千分之一,那麼天天成功交易數會增長10萬筆,一年就能挽回3到4千萬筆的交易,由此能夠看出無線網絡通信對於APP的重要性。架構
在咱們團隊內部有一個很好的比喻:將一個APP比做一棵樹,把樹根看作是整個Server端的業務服務,將樹根和樹枝比做是APP的業務功能,那麼這棵樹的樹幹就是無線網絡通信,它是端到端的鏈接,是用戶服務觸達的通道,也是用戶體驗的保障。併發
同時咱們也意識到不一樣的APP對於無線網絡的需求級別也不相同,因此給出的建議是按照用戶量進行劃分。app
對於無線網絡的挑戰,出如今端到端的通信過程,從終端網絡請求開始到運營商的接入網到核心網,並最終傳輸到機房,在整個過程當中會存在不少問題。負載均衡
好比:終端受限,RRC狀態機切換延遲,整個移動網絡表現出的是高延時,低帶寬的特色,而且具備高誤碼率,高丟包率,而且整個鏈路不穩定,連接時好時壞,可能還會出現劫持和篡改等問題。ide
結合業務和性能能夠將挑戰分爲三個部分:工具
業務差別化的訴求。表如今網絡的觸達方式的差別化,以及交互形式的差別化,相比於原來的文字消息,圖片以及視頻漸漸成爲主流。性能
複雜的移動網絡環境。無線接入是屬於非實時在線型的,而且與有線網絡不一樣,無線網絡的動態性更強,基礎移動網絡環境多樣,三大運營商和2,3,4G網絡各不相同,而且用戶的訪問是隨時隨地出現的。
性能需求。包括超大流量的應對和總體的穩定性。
面對這些挑戰,該如何保障無線網絡的性能呢?
核心目標是:穩定、可靠和快速。總體的性能保障思路能夠參考現實生活中的鐵路運輸系統。
在平常的鐵路運輸中,鐵路和鐵軌組成了整個運輸網絡,至關於網絡架構;運行在其上的不一樣類型的火車類比於網絡上不一樣的協議;火車的路線以及時刻表至關於網絡的策略;而對於鐵路運輸的調度就至關於網絡的運營管控。
因此綜合考慮網絡的架構、協議、策略和運營才能爲用戶提供高效的無線網絡服務。
在這一部分將討論關於網絡設計基礎包括支付寶APP的網絡架構以及協議的選擇。
支付寶的網絡基礎架構如圖:
請求會經過核心網以及主幹網進入機房的LVS進行負載均衡,以後達到接入網關,接入網關進行協議處理以及加解密,通過接入網關的處理,請求會進入下層的服務網關,最後到達業務系統再到DB。
這裏的服務網關主要分爲兩類:請求響應模式的API服務網關,支持增量更新的推送服務網關。
對於整個架構而言,常常會被問及兩個問題:終端網絡異常該怎麼辦?以及如何應對超大流量?
對於終端網絡的管控,主要有兩個模塊完成:終端管控模塊和移動管控中心。這兩個模塊相互配合,讓終端網絡高可控,達到分鐘級的容災調度能力。
總體的功能特性包括HTTPDNS,全網調度,多維度策略精細控制,獨立通道加安全校驗,以及經過推拉結合的方式使決策快速生效。
另外一問題就是如何應對超大流量的併發,對於淘寶以及支付寶而言,這也是必須面對的挑戰。特別是在雙11、雙十二這樣的購物節,流量每每是平時的幾倍甚至幾十倍,必需要考慮總體網絡接入層可否應對突增的巨大網絡流量。
從架構上講,主要有三種方式應對超大流量:
網絡過載保護。限制鏈接數、新建鏈接數、包總量,下降過載時的用戶體驗。
多級網關。從接入網關,到業務網關再到服務網關,採起了流量漏斗的模式,從億級到千萬級再到百萬級造成了多層的流量防控。
有損服務。其核心是將重要資源分配給重要的業務,須要對服務進行優先級劃分,同時也要在多級別有損中考慮終端的體驗,對於不一樣的服務給予用戶最優的交互形式。
有了好的架構基礎,想要網絡快起來就必須選擇合適的協議。圖中是支付寶APP的網絡協議結構:
最下面的傳輸層使用TCP協議,咱們對安全傳輸協議SSL/MTLS進行了改進並提出了更適合移動網絡的MTLS;
在表示層有谷歌的SPDY協議,考慮到無線網絡的特殊性,咱們自定義了MMTP協議;
最上層就是應用層的協議,如經常使用的HTTP,以及移動RPC協議等。
在架構演進過程當中,咱們逐漸放棄了HTTP、SPDY協議而選擇使用自定義的MMTP協議,這是由於支付寶APP的業務場景在變,須要對網絡進行精細控制,而SPDY和HTTP2.0更適合於移動電商等場景,其控制粒度不夠細。
那麼MMTP協議究竟是什麼?它是螞蟻移動傳輸協議,是基於TCP的自定義應用協議,其基礎以及特性以下:
咱們認爲TCP協議是在ip網絡上提供可靠的鏈接服務;而MMTP協議是面向不穩定的無線網絡,提高移動服務的可靠性。
針對無線網絡,咱們在網絡協議上另外一個亮點就是MTLS協議。首先看下傳統安全傳輸協議SSL/TLS在無線網絡環境下存在的弊端:
正是基於這些缺點和痛點,咱們進行了優化並提出了MTLS協議:
從實踐經驗出發,咱們將無線網絡的優化分爲幾個關鍵點,包括網絡加減法,代碼調優,業務治理以及電量&流量控制。
應對這樣的網絡,應該思考這些問題:
終端網絡狀態是變化的,那何時去建連?
採用什麼方式建連?
建好的鏈接該怎麼保持才能持久?
若是網絡不穩定了,怎麼才能第一時間發現這個鏈路出現了問題? 若是是受限網絡,又要怎麼應對?
面對這些問題,須要從幾個角度出發:建連時機、建連策略、鏈接保持,超時控制,假鏈接以及特殊網絡。
以前提到了終端受限問題,其實在作全部的網絡優化策略時都要考慮電量和流量的消耗:
在網絡優化策略的最後談一下優化工具以及平臺:
在擁有了好的架構基礎和好的優化策略以後還須要一套好的保障機制來促進網絡良好有序地運行,接下來談一下支付寶網絡數據運營方面所作的工做。
網絡數據運營是網絡與數據相結合,使用數據手段指導網絡的優化策略的實施。
首先第一步就是進行網絡數據化,肯定總體網絡數據源,由於掌握的信息越多,就越有利於瞭解網絡的實際狀況。
所以在作網絡數據化的時候進行了全方位的數據採集,數據採集以後進行存儲,再以後進行數據分析,最後是數據的解釋與展示以及數據使用。
經過整套體系的運行,使得整個網絡的規劃更具備目標性,試錯更具備針對性。在總體數據運行裏面,有一點相信你們比較感興趣就是:如何評價網絡技術的好壞?
和你們分享一下支付寶APP在無線網絡性能保障上的認識:
最後爲你們介紹一下支付寶APP在將來無線網絡技術方面的努力方向:
IPv6
QUIC
廠商合做
網絡pop節點加速