蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践
http://www.infoq.com/cn/articles/technical-architecture-of-alipay-and-ant-check-later
每年“雙11”都是一場電商盛會,消費者狂歡日。今年雙11的意義尤為重大,它已經發展成為全世界電商和消費者都參與進來的盛宴。而對技術人員來說,雙十一無疑已經成為一場大考,考量的角度是整體架構、基礎中間件、運維工具、人員等。
一次成功的大促準備不光是針對活動本身對系統和架構做的優化措施,比如:流量控制,緩存策略,依賴管控,性能優化……更是與長時間的技術積累和打磨分不開。下面我將簡單介紹支付寶的整體架構,讓大家有個初步認識,然后會以本次在大促中大放異彩的“螞蟻花唄”為例,大致介紹一個新業務是如何從頭開始準備大促的。
因為涉及的內容要深入下去是足夠寫一個系列介紹,本文只能提綱挈領的讓大家有個初步認識,后續可能會對大家感興趣的專項內容進行深入分享。
架構
支付寶的架構設計上應該考慮到互聯網金融業務的特殊性,比如要求更高的業務連續性,更好的高擴展性,更快速的支持新業務發展等特點。目前其架構如下:
整個平臺被分成了三個層:
架構特性
邏輯數據中心架構
在雙十一大促當天業務量年年翻番的情況下,支付寶面臨的考驗也越來越大:系統的容量越來越大,服務器、網絡、數據庫、機房都隨之擴展,這帶來了一些比較大的問題,比如系統規模越來越大,系統的復雜度越來越高,以前按照點的伸縮性架構無法滿足要求,需要我們有一套整體性的可伸縮方案,可以按照一個單元的維度進行擴展。能夠提供支持異地伸縮的能力,提供N+1的災備方案,提供整體性的故障恢復體系。基于以上幾個需求,我們提出了邏輯數據中心架構,核心思想是把數據水平拆分的思路向上層提到接入層、終端, 從接入層開始把系統分成多個單元,單元有幾個特性:
下面是支付寶邏輯機房架構的概念圖:
重要通知:接下來InfoQ將會選擇性地將部分優秀內容首發在微信公眾號中,歡迎關注InfoQ微信公眾號第一時間閱讀精品內容。
這套架構解決了幾個關鍵問題:
目前新架構的同城主體框架在2013年已經完成,并且順利的面對了雙十一的考驗,讓整套架構的落地工作得到了很好的證明。
在2015年完成了基于邏輯機房,異地部署的“異地多活”的架構落地。“異地多活”架構是指,基于邏輯機房擴展能力,在不同的地域IDC部署邏輯機房,并且每個邏輯機房都是“活”的,真正承接線上業務,在發生故障的時候可以快速進行邏輯機房之間的快速切換。
這比傳統的“兩地三中心”架構有更好的業務連續性保障。在“異地多活”的架構下,一個IDC對應的故障容災IDC是一個“活”的IDC,平時就承接著正常線上業務,保證其穩定性和業務的正確性是一直被確保的。
以下是支付寶“異地多活”架構示意圖:
除了更好的故障應急能力之外,基于邏輯機房我們又具備的“藍綠發布”或者說“灰度發布”的驗證能力。我們把單個邏輯機房(后續簡稱LDC)內部又分成A、B兩個邏輯機房,A 、B機房在功能上完全對等。日常情況下,調用請求按照對等概率隨機路由到A或B 。當開啟藍綠模式時,上層路由組件會調整路由計算策略,隔離A與B之間的調用, A組內應用只能相互訪問,而不會訪問B組。
然后進行藍綠發布流程大致如下:
Step1. 發布前,將“藍”流量調至0%,對“藍”的所有應用整體無序分2組發布。
Step2. “藍”引流1%觀察,如無異常,逐步上調分流比例至100%。
Step3. “綠”流量為0%,對“綠”所有應用整體無序分2組發布。
Step4. 恢復日常運行狀態,藍、綠單元各承擔線上50%的業務流量。
分布式數據架構
支付寶在2015年雙十一當天的高峰期間處理支付峰值8.59萬筆/秒,已經是國際第一大系統支付。支付寶已經是全球最大的OLTP處理者之一,對事務的敏感使支付寶的數據架構有別于其他的互聯網公司,卻繼承了互聯網公司特有的巨大用戶量,最主要的是支付寶對交易的成本比傳統金融公司更敏感,所以支付寶數據架構發展,就是一部低成本、線性可伸縮、分布式的數據架構演變史。
現在支付寶的數據架構已經從集中式的小型機和高端存儲升級到了分布式PC服務解決方案,整體數據架構的解決方案盡量做到無廠商依賴,并且標準化。
支付寶分布式數據架構可伸縮策略主要分為三個維度:
下圖是支付寶內部交易數據的可伸縮性設計:
交易系統的數據主要分為三個大數據庫集群:
對于分拆出來的各個數據節點,為了保證對上層應用系統的透明,我們研發一套數據中間產品來保證交易數據做到彈性擴容。
數據的可靠性
分布式數據架構下,在保證事務原有的ACID(原子性、一致性、隔離性、持久性)特性的基礎上,還要保證高可用和可伸縮性,挑戰非常大。試想你同時支付了兩筆資金,這兩筆資金的事務如果在分布式環境下相互影響,在其中一筆交易資金回滾的情況下,還會影響另外一筆是多么不能接受的情況。
根據CAP和BASE原則,再結合支付寶系統的特點,我們設計了一套基于服務層面的分布式事務框架,他支持兩階段提交協議,但是做了很多的優化,在保證事務的ACID原則的前提下,確保事務的最終一致性 。我們叫做“柔性事物”策略。原理如下:
以下是分布式事務框架的流程圖:
實現:
與2PC協議比較:
其中關鍵組件異步可靠消息策略如下:
其中一些關鍵設計點:
螞蟻花唄
螞蟻花唄是今年增加的一個新支付工具,“確認收貨后、下月還”的支付體驗受到了越來越多的消費者信賴。跟余額和余額寶一樣,螞蟻花唄避開了銀行間的交易鏈路,最大限度避免支付時的擁堵。據官方數據披露,在今天的雙十一大促中,螞蟻花唄支付成功率達到99.99%、平均每筆支付耗時0.035秒,和各大銀行渠道一起確保了支付的順暢。
螞蟻花唄距今發展不到一年,但發展速度非常快。從上線初期的10筆/秒的支付量發展到雙十一當天峰值2.1w筆/秒。支撐螞蟻花唄業務發展的技術體系經過不斷演進、已經完全依托于螞蟻金服的金融云架構。
在2014年12月,螞蟻花唄團隊完成業務系統優化,按照標準將系統架設到了金融云上,依次對接了渠道層、業務層、核心平臺層、數據層,使得用戶對螞蟻花唄在營銷、下單和支付整個過程中體驗統一。
2015年4月,螞蟻花唄系統同步金融云的單元化的建設,即LDC,使得數據和應用走向異地成為了現實,具備了較好的擴展性和流量管控能力。在可用性方面,與金融云賬務體系深度結合,借用賬務系統的failover能力,使得螞蟻花唄通過低成本改造就具備了同城災備、異地災備等高可用能力。任何一個單元的數據庫出了問題、能夠快速進行容災切換、不會影響這個單元的用戶進行螞蟻花唄支付。在穩定性方面,借助于云客戶平臺的高穩定性的能力,將螞蟻花唄客戶簽約形成的合約數據遷移進去,并預先寫入云客戶平臺的緩存中,在大促高峰期緩存的命中率達到100%。同時,結合全鏈路壓測平臺,對螞蟻花唄進行了能力摸高和持續的穩定性測試,發現系統的性能點反復進行優化,使得大促當天系統平穩運行。在之前的架構中,系統的秒級處理能力無法有效衡量,通過簡單的引流壓測無法得到更加準確、可信的數據。立足于金融云,系統很快通過全鏈路壓測得到了每秒處理4w筆支付的穩定能力。
螞蟻花唄業務中最為關鍵的一環在于買家授信和支付風險的控制。從買家下單的那一刻開始,后臺便開始對虛假交易、限額限次、套現、支用風險等風險模型進行并行計算,這些模型最終將在20ms以內完成對僅百億數據的計算和判定,能夠在用戶到達收銀臺前確定這筆交易是否存在潛在風險。
為了保證螞蟻花唄雙11期間的授信資金充足,在金融云體系下搭建了機構資產中心,對接支付清算平臺,將表內的信貸資產打包形成一個一定期限的資產池,并以這個資產池為基礎,發行可交易證券進行融資,即通過資產轉讓的方式獲得充足資金,通過這一創新確保了用戶能夠通過花唄服務順利完成交易,并分流對銀行渠道的壓力。通過資產證券化運作,不僅幫助100多萬小微企業實現融資,也支撐了螞蟻花唄用戶的消費信貸需求。螞蟻小貸的資產證券化業務平臺可達到每小時過億筆、總規模數十億元級別的資產轉讓。
總結
經過這么多年的高可用架構和大促的準備工作,螞蟻金融技術團隊可以做到“先勝而后求戰”,主要分為三方面技術積累:“謀”,“器”,“將”。
“謀”就是整體的架構設計方案和策略;
“器”就是支持技術工作的各種基礎中間件和基礎組件;
“將”就是通過實踐鍛煉成長起來的技術人員。
縱觀現在各種架構分享,大家喜歡談“謀”的方面較多,各種架構設計方案優化策略分享,但實際最后多是兩種情況:“吹的牛X根本沒被證實過”(各種框架能力根本沒經過實際考驗,只是一紙空談),“吹過的牛X一經實際考驗就破了”(說的設計理念很好,但是一遇到實際的大業務的沖擊系統就掛了),最后能成功的少之又少。這些說明雖然架構上的“心靈雞湯”和“成功學”技術人員都已經熟的不行,但是發現一到實踐其實根本不是那么回事。從此可以看出,其實最后起決定作用的不是 “謀”方面的理論層面的分析設計,最重要的是落地“器”和“將”的層面。有過硬高穩定性的各種基礎設施工具的和身經百戰被“虐了千百次”的技術人員的支撐才是最后取勝的關鍵。而這個兩個層面的問題是不能通過分享學到的,是要通過日積月累的,無數流血流淚趟雷中招鍛煉出來的,沒有近路可抄。
而目前從業務和市場的發展形勢來看,往往就是需要技術在某個特定時間有個質的能力的提升和飛躍,不會給你太多的準備技術架構提升的時間,在技術積累和人員儲備都不足的時候,如何構建平臺能力,把更多的精力放在業務相關的開發任務中,是每個技術團隊的希望得到的能力 。
過去我們是通過某個開源或者商業組件來實現技術共享得到快速解決謀發展技術的能力的,但是隨著業務復雜性,專業性,規模的逐步變大,這種方式的缺點也是顯而易見的:1、很多組件根本無法滿足大并發場景下的各種技術指標;2、隨著業務的復雜和專業性的提高,沒有可以直接使用的開源組件;3、“人”本身的經驗和能力是無法傳遞的。
所以現在我們通過“云”分享的技術和業務的能力的方式也發展的越來越快,這就我們剛才介紹的“螞蟻花唄”技術用幾個月的時間快速的成功的達到“從上線初期的10筆/秒的支付量發展到雙十一當天峰值2.1w筆/秒,快速走完了別人走了幾年都可能達不到的能力。類似的例子還有大家熟知的“余額寶”系統。
這些都是建立在原來螞蟻金服用了10年打磨的基礎組件和技術人員經驗的云服務上的,通過目前基于這種能力,我們目前可以快速給內部和外部的客戶組建,高可用、安全、高效、合規的金融云服務架構下的系統。
轉載于:https://www.cnblogs.com/davidwang456/articles/8206198.html
總結
以上是生活随笔為你收集整理的蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 序列化和反序列化--转
- 下一篇: 1号店交易系统架构如何向「高并发高可用」
