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