剛剛過去的雙十一全天交易額2684億,再創新高,支付寶自研分散式資料庫OceanBase每秒處理峰值達到6100萬次,再次展示世界級數字金融運算能力。
今年是支付寶參加雙十一的第十一年,也是一個新的起點,我們將支付寶曆年重要技術製作成一張大圖,但圖所包含的資訊畢竟有限,本文將這些技術分為三個階段,為你詳細解讀。
2019-2013:被大促拽著前進2009年光棍節,第一次雙十一來的很突然,誰也沒有想到在網民自創的“節日”搞的促銷活動會成為中國最大的購物狂歡節,當天淘寶商城的成交額激增10倍。
支付寶第一年參加雙十一,第一代對賬系統完成大促全量資金核對,同時整體完成面向服務的架構SOA改造,雖然手忙腳亂,不過還是扛了下來。
在2008年以前,支付寶用的是阿里的WebX框架,採用IOE商業系統+開源軟體的方式搭建後臺,但這套架構是煙囪式架構,難以維護和擴充套件。2007年開始,支付寶自研SOFA框架,並於2008年1月上線。
SOFA分散式中介軟體早期架構
SOFA最開始的目標是對後端架構進行分散式服務化改造,而雙十一大促將這個程序大大加快,剛完成這項改造,團隊又馬不停蹄的投入下一項任務中。
2010年第二次雙十一,大家雖然有了準備,但實際的流量和成交額仍然遠超估計,據當年的參與者表示,雖然準備了比平時多3倍的容量,但最後的流量是平時的20倍,在最後關頭,運維人員將會計系統降級,避免核心系統崩潰。
在這一年裡,支付寶資料庫團隊完成資料庫的垂直拆分和水平擴充套件,將交易賬戶庫分為交易庫和賬戶庫,奠定了彈性擴容的基礎。但是,拆分帶來了資料一致性問題,中介軟體團隊研發並上線了基於兩階段提交的分散式事務中介軟體XTS,解決了這個問題。XTS經過不斷完善,現在已經進化為阿里巴巴和支付寶共建的Seata專案,並已經在GitHub上開源。
也正是在這一年,分散式關係資料庫OceanBase開始立項,開始了技術長跑。
2011年,支付寶運維監控系統xflush上線,實時秒級監控大促的峰值,業務健康度不再是黑盒,後來,升級為全功能監控平臺AntMonitor。
2012年雙十一單日交易一億筆,在這背後,是支付寶緊急通過資料、網路、機房的改造,將單日的支付能力從百萬級提升到了億級。
當時,支付寶系統伸縮的瓶頸在基礎設施和應用層面,首先是負責流量接入和調撥的負載均衡,支付寶自研了負載均衡中介軟體Spanner,2012年上線併成功支援大促,在不斷升級改造後,到今天也仍在支撐日漸高漲的巨大流量。
其次的瓶頸在交易系統和賬務系統,支付寶通過多IDC的改造,將交易系統和賬務系統進一步拆分,擴充套件了系統承載能力,並通過FailOver機制,避免單點故障。
多IDC架構
2013年,支付寶 All-In 無線,移動端首次在雙十一大促中承擔重要職責。
但實際上這一年最重要的變化是,支付寶開始實施單元化的LDC邏輯資料中心,並在此基礎上實現了交易支付系統的異地雙活,有效提升了核心系統的持續服務能力。
這裡的單元是指一個能完成所有業務操作的自包含集合,在這個集合中包含了所有業務所需的所有服務,以及分配給這個單元的資料。單元化架構就是把單元作為系統部署的基本單位,在全站所有機房中部署數個單元,每個機房裡的單元數目不定,任意一個單元都部署了系統所需的所有的應用,資料則是全量資料按照某種維度劃分後的一部分。
支付寶單元化改造並不是一蹴而就,過程十分艱辛,不過帶來的好處也非常多,包括理論上無限可伸縮微服務架構、異地多活部署、全站藍綠髮布和線上灰度模擬、異構機房上的彈性混合雲架構等。
從2009年到2013年的雙十一,支付峰值從數百筆增長到1.3萬筆每秒,每年的增長速度都是數倍甚至十幾倍的提升。為了支撐瘋漲的流量,這些年裡,支付寶技術的最重要目標是擴充套件系統的承載能力,可以說是被大促拽著前進。到2013年,LDC架構實現了理論上無限伸縮的能力,技術團隊終於可以稍作喘息,開始追求精細化,大促相關技術也開始走到新的階段。
2014-2018:從去IOE到大促技術標準化2014年對於支付Bora說,是一個全新階段的開始:去IOE開始落地,大促神器全鏈路壓測正式啟用,最後大促中控平臺上線,標誌著支付寶雙十一大促相關技術走向標準化。
首先是去IOE,OceanBase在TPC-C資料庫基準測試取得第一名,這個螞蟻自研的分散式關係資料庫一下子為世人所知,這裡我們看一下這些年來它在幕後一路走過的里程碑:
2014.11 OceanBase承擔支付寶交易10%流量;2015.11 OceanBase承擔支付寶交易100%、支付50%流量;2016.11 OceanBase承擔支付寶交易100%、支付100%、花唄賬務30%流量;2017.11 OceanBase承擔支付寶交易100%、支付100%、賬務100%流量,“去O”大功告成!並第一次走出阿里,應用到南京銀行網際網路核心系統;2018.11 基於OceanBase2.0分割槽的百萬支付架構上線,正式相容Oracle;2019.11 OceanBase取得TPC-C測試第一名,雙十一每秒處理峰值6100萬次;……在2014年時,支付寶決定將核心交易系統的10%流量放到OceanBase上,在今天看來是非常冒險的舉動,不過當時之所以這麼做,是因為之前所採用的Oracle資料庫已經無法支撐下一次大促了。OceanBase也經歷了非常多的優化,在2018年的雙十一中,OceanBase 2.0上線,並確立了以OceanBase 2.0分割槽為主的架構,徹底解決了資料庫層面的瓶頸,實現百萬支付架構。
OceanBase分割槽架構
2014年雙十一首次採用全鏈路壓測,這可以說是大促保障的核武器。全鏈路壓測解決了之前的大促規劃靠拍腦袋、成功看運氣的問題,通過模擬使用者在大促時的行為和流量,將涉及到的每個系統、每項技術都測試到位,大大減少了大促出事故的概率。
2016年,支付寶還在LDC邏輯資料中心的基礎上,在支付核心鏈路成功實現彈性架構,100%按照運營需求彈性擴充資源,極大節省了成本。彈性架構可以讓系統隨流量自動化的伸縮,可以降低成本,提升運維效率。
2017年,支付寶首次實現離線上混合部署,80%線上資源,20%離線資源。隨著大資料和機器學習的落地,支付寶平時有一些離線計算叢集,通過調整工作時間,可以實現和大促高峰流量錯峰,再和彈性架構結合,就實現了分時排程,同一批資源在不同的時間執行不同的應用,最大程度提升資源利用率。
離線上混部示意圖
2018年雙十一,支付寶推出系列活動,“碼上雙十一”聯動手淘拉新促活使用者,相當於開啟了雙大促,如果按以前的做法,需要採購雙倍的伺服器,有了混部和分時排程之後,才得以在新增少量伺服器的情況下支撐,極大的節省了成本。
2017年其它的新技術還包括:
首次啟用智慧客服系統,單日服務總量超過500萬人次。智慧風控AlphaRisk多模式切換落地,確保賬戶資損率低於千萬分之五,遙遙領先於全球平均水平。首個在國內自主研發的圖資料庫GeaBase及自研圖查詢語言第一次參加雙十一,實現了對百億級關係網路毫秒級的查詢和變更。2018年雙十一的時候,關於大促保障的相關技術基本已經成熟,但都比較零散,如果想更好的利用這些技術,需要把它們整合到一起,大促中控平臺也正是在這個背景下出現的,它標誌著支付寶將之前的大促經驗沉澱,大促保障相關的技術實現標準化。
2018年雙十一的新技術還有:
首次在大促中進行紅藍攻防演練,在全鏈路壓測的基礎上進一步提升整個系統的可靠性。大促巡檢平臺上線,實現大促相關的配置的全面檢查,防止配置失誤。區塊鏈技術第一次全面參戰,百餘個國家和地區、1.5億跨境上牌的原產地溯源不再是難題。生物支付首次成為天貓雙十一主流支付方式,每10筆支付就有6筆採用生物支付,標誌著中國的生物支付時代來臨。2017年雙十一支付峰值25.6萬筆/秒,2018年支付寶內部實現可擴充套件的百萬支付架構,再加上大促中控平臺上線,我們可以看到,支付寶大促相關的技術已經成熟,並在不斷打磨中追求可靠性、資源利用率、自動化、靈活性,把大促相關技術做到極致。
2019+:面向未來的金融科技從2018年起,支付寶開始嘗試和探索雲原生架構的落地,同時資料智慧相關技術也在公司內廣泛使用。2019年,相關的技術開始亮相大促舞臺,以支付寶自研產品SOFAMesh搭建的金融級雲原生基礎設施首次登上雙十一,打造了業界最大的Service Mesh叢集。
OceanBase 2.2上線大促核心支付鏈路,每秒處理峰值6100萬次,這是OceanBase資料庫同時相容MySQL以及Oracle兩種模式的一個里程碑的版本,效能和穩定性上也相對2.0版本有大幅提升。
最重要的是,支付寶技術開始走向無人區,未來的道路只能靠自己開拓,沒有別人可以參考。支付寶開始自己描述面向未來的金融技術架構,推出了金融級雲原生、開放計算架構等技術和理念,打造面向未來的金融科技。
金融級雲原生是指在CNCF所定義的雲原生基礎上,發展出適合金融機構使用的一套技術棧,其中包括全面對外開放的SOFAStack金融級雲原生分散式平臺,以及通過安全容器、TEE、Service Mesh等構建的全棧雲原生安全架構。
SOFAStack不僅採用Kubernetes、容器等社群化的雲原生基礎技術,同時考慮金融行業的特殊性,支援之前的傳統架構,形成雙模技術,包括:
雙模PaaS:包括傳統PaaS和基於Kubernetes的PaaS,在PaaS中用容器來模擬 VM 的執行模式,同時支援容器和虛擬機器;雙模微服務:通過Mesh來統一基於Kubernetes的微服務和老的服務註冊中心式微服務;雙模Serverless:同時支援基於雲原生的Nodejs Serverless模式、基於JVM的Serverless模式,以及基於雲原生的Java Serverless模式。在開放計算架構方面,支付寶通過設計一套符合當下計算體系,同時又能應對未來計算趨勢的技術框架,來解決計算引擎更新、統一研發體系、資料共享互通、資料風險防控等幾方面問題。
首先在計算引擎方面,針對不同的計算作業狀態進行統一管理,達到相容任何一種計算引擎,並且實現外掛化能力;在研發層面,推出了SmartSQL,在標準SQL規範之上擴充套件了部分功能及語法,希望用最簡單通用的語言,描述絕大部分的計算及機器學習作業;在儲存層面,支付寶自主研發了統一儲存系統,支援多種型別的資料儲存格式,同時支援一份資料不同格式之間的自動轉換及遷移,極大地簡化了引擎層對儲存的使用,同時節約了大量成本。
另外,開放計算架構之所以叫開放,就是它能包容不同的計算模式和引擎。在開放計算架構之中,包含了離/線上一體的圖計算引擎及儲存,從使用場景,可以覆蓋線上、實時、離線各個場景,用於支援不同時效性的業務。從功能上,具備金融級圖資料庫,超大規模圖計算,流圖混合的動態圖計算以及超快記憶體圖等計算能力,覆蓋了不同量級的資料計算能力。在機器學習方面,開放計算架構還包含了之前已經開源的SQLFlow以及前段推出的ElasticDL彈性深度學習框架。
這一整套體系將BigData和DataBase的理念揉合在一起,又稱為Big Data Base,是支付寶摸索出來的金融資料智慧的最佳實踐,下一代大資料的基石。
2019年,開放計算架構在支付寶不同場景中落地。隨著圖計算在花唄,螞蟻森林等場景中大規模上線,圖資料庫Geabase突破萬億邊,線上圖分析百億關係特徵計算秒級響應。同時,通過融合計算引擎,協同流、圖、平行計算、機器學習等不同計算模式,在支付過程中提供秒級智慧決策能力。
結語網際網路技術的更新迭代永無止境。
對支付寶人來說,雖然已經經歷了這麼多的大促,但每一年的雙十一仍然是全新的挑戰。這個挑戰不僅來自於不斷推陳出新的業務和運營,也來自於技術人對自己的嚴格要求,就像那句話所說的,今天的最好表現,是明天的最低要求。
正是這樣的驅動力,驅使著支付寶的技術人不斷的超越自我,突破舒適區,尋找下一場技術革命。也許,這也正是雙十一的意義所在。