1. 程式人生 > 程式設計 >2019雙11,支付寶有哪些“祕密武器”?

2019雙11,支付寶有哪些“祕密武器”?

2019雙11,支付寶參戰的第十一年。

與十一年前相比,雙11的許多東西都改變了。比如金額——2684億,差不多是十一年前的5000倍;比如流量——訂單峰值54.4萬筆/秒,曾經是想都不敢想的數字;再比如層出不窮的新技術,就是這些驚人數字背後的“祕密武器”,給迎戰雙11的戰士們作最完備的武裝。

也有始終不變的東西。大戰來臨前的緊張、不安、如履薄冰,對每一個細節反覆check的“強迫症”,以及勝利之後的欣喜、釋然、滿心充實,和下一步砥礪前行。

支付寶的技術工作,就是“半年搞建設,半年搞大促”。雖然是一句戲言,但足夠從側面證明大促作為實踐戰場的重要性。而每當雙11圓滿落下帷幕,技術人也就到了收穫的季節。那些歷經雙11大考的新技術,就像經歷過了“成人式”一樣,一一走到臺前開始獨當一面。

SOFAMesh:金融級雲原生第一步

眾所周知,金融機構因為肩負的責任重大,面對新技術時,普遍都是比較保守的。支付寶也不例外,尤其是在雙11這種場景下,流量大,峰值高,平時不管多小的問題,在這時候都可能被放大成不得了的大問題。

於是,今年的大促迫在眉睫時,SOFAMesh團隊還在糾結。來自周圍的各種聲音,讓他們感到壓力很大。被問到的最多的問題,就是“這個靠不靠譜?”

一個“行”字,在雙11的面前,可能有千鈞之重。能不能扛過零點的流量峰值?能不能保障穩定?能不能保證不出差錯?

Mesh是一項很新的技術,社群開源專案本就不成熟,而SOFAMesh是支付寶從第一行程式碼就開源加自主開發的專案,在金融級的嚴苛要求面前,在雙11的極端場景之下,究竟行不行?誰心裡都沒有底。

然而此時不上,整整兩年的心血就白費了。反過來說,如果能打贏這一仗,就證明雲原生之路在雙11這種體量的考驗之下都是可行的,這對於整個行業而言,會是一個很好的標杆。

“螞蟻金服要做金融行業技術的拓荒者和實踐者。”資深技術專家楊海悌說。

這已不是螞蟻金服第一次做“吃螃蟹的人”,在金融機構普遍依賴IOE時,他們率先開始探索分散式,現在分散式漸漸成為主流,他們又率先琢磨起雲原生。

“以前都是業務推動技術,現在到了技術為業務提供紅利的時候了。”對於自己看著長大的SOFAMesh,楊海悌一面很有信心,一面也十分忐忑。

SOFAMesh是支付寶針對金融行業的特殊需求而開發的金融級中介軟體,屬於金融級雲原生分散式框架SOFAStack的一部分,這個框架的開發始於2009年,幾乎和雙11同齡。

是騾子是馬,總得遛過了才知道。SOFAMesh的第一份答卷很快交了出來——以往分時複用的資源切換需要4小時,用上了SOFAMesh之後,不到4分鐘。效能提升將近百倍。

分時複用,顧名思義,就是在不同的時間段裡讓同一個資源能夠“複用”於多個應用。這一技術能夠減少資源閒置,提高資源的利用效率。這一技術在2018年雙11就曾立過功——當時,支付寶面對這天貓雙11和自己的會員大促的“雙大促”挑戰,為了節約成本少採購一些資源,上線了分時排程1.0,使用同一批資源同時支援兩個大促,在支撐天貓雙 11 和經濟體使用者增長兩個大促的同時,IT成本一分錢也沒有漲。

但去年在彈性架構模式下做分時排程,切換資源需要重新配置和部署相關係統,4個小時的切換時間,雖然成功支援了“雙大促”,還是滿足不了對短時間內快速呼叫資源有需求的業務。

到了今年,由於SOFAMesh的上線,切換資源不再需要重新部署,切換時間縮短到了3分40秒。這意味著,像螞蟻森林那樣每天都會面臨流量小高峰的業務,無需事先留足資源餘量,提前10分鐘開始切換資源,都綽綽有餘。

“將來,切換時間還有望縮短到秒級。”楊海悌說。

2019年雙11,SOFAMesh扮演了非常重要角色——100%覆蓋螞蟻金服核心支付鏈路,幾十萬容器,峰值千萬QPS,平均RT(響應時間) 0.2ms,是業界最大的 Service Mesh 叢集。它在洪峰面前的穩定性和平滑性,以及對效率的顯著提升,都是有目共睹的。

這張漂亮的成績單背後,其實就是一個字——行。

“雲原生”已經成為業界公認的技術趨勢,它的目標是提升運維效率、降低資源使用成本、提升服務安全可靠性等。雲原生帶來的基礎設施升級,為技術演進提供基礎能力支撐,並且提升未來架構空間的想象力。2019也是支付寶的金融級雲原生落地元年,包括SOFAMesh在內的一系列雲原生技術,經歷雙11的考驗之後,向整個業界證明——我們行,雲原生這條路,也行。

雙11之後,螞蟻金服舉辦的釋出會上,副CTO胡喜宣佈,會將SOFAMesh也對外公開。

正如“元年”一詞所說,這只是螞蟻金服在新的開拓之路上邁出的第一步。

OceanBase 2.2:世界紀錄就是用來打破的

OceanBase被人質疑“行不行”的次數,更是多到數不過來。

資料庫是命脈,尤其是金融機構的資料庫,出一點問題都是真金白銀的問題,哪個業務都不敢冒風險,老老實實抱著老牌進口貨Oracle,圖個太平。

但Oracle也沒見過雙11這種陣仗,隨著雙11的流量連年翻番,它的效能眼見著碰到了天花板。2014年雙11前的壓測,Oracle出現了10%的流量缺口。

OceanBase感到機會來了。在那之前,他們已經“蟄伏”了四五年,沒有固定的業務,最落魄的時候,甚至面臨團隊解散和專案取消的境況。

當時的OceanBase將滿5歲,版本號卻還是0.x,外表看來甚至還是個demo,一上來就要承接雙11的10%的流量,相當於支付寶平日流量的最高峰,而且要做的還是最核心的交易系統——一分錢都不能出錯的那種。

一時之間,“你們行不行”的質疑聲此起彼伏。

“別人說我們不行的時候,我們都非常堅定地認為,行。”螞蟻金服研究員楊傳輝說。他是OceanBase開發團隊的初期成員之一,親眼見過OceanBase寫下第一行程式碼。

從拿下10%的任務,到雙11的正式大考,時間不足兩週。最後十來天,資深運維專家師文匯帶著全團隊幾乎不眠不休地做優化,硬是把長達10毫秒的響應時間降低到了1毫秒以下。

那一年的雙11,OceanBase沒出一個差錯,一戰成名。

今年的雙11,OceanBase的版本號是2.2。在為版本命名方面,他們的謹慎作風一如既往。

但是OceanBase的每一次版本迭代,發生的都是“脫胎換骨”的變化,自己創下的紀錄,也由自己不斷重新整理——

2018年雙11,基於OceanBase 2.0分割槽方案的架構正式上線,這一架構解決了資料庫可擴充套件的瓶頸,將每秒交易的承載能力提升到百萬級,並讓效能提升了50%。

50%的提升不是個小數目,但更令人驚訝的是,僅僅一年之隔,在2019年的雙11中,全新上線的OceanBase2.2版本,在2.0的基礎上,又讓效能提高了50%。

就在今年的10月3日,權威機構國際事務處理效能委員會TPC披露:螞蟻金服的分散式關係資料庫OceanBase,打破美國甲骨文公司保持了9年的世界紀錄,登頂TPC-C榜單,同時也成為首個登上該榜單的中國資料庫系統。

短短的一個月之後,在2019年雙11的考場之上,OceanBase2.2又再次重新整理了資料庫處理峰值,達6100萬次/秒,創造了新的世界紀錄。

在金融級核心資料庫的嚴格要求之下,OceanBase為何還能有這樣跨越式的效能升級?

關鍵的祕密在於,OceanBase背後是原生的分散式資料庫設計以及PAXOS協議,通過水平擴充套件x86伺服器就可以達到無限伸縮,支援大規模高併發的效果。

另一方面,今年為了進一步提升效能和降低延遲,OceanBase還通過中介軟體的優化,自動將多條SQL聚合成輕量級的儲存過程,這個過程讓原本需要數十次SQL網路互動的任務降低為單次網路互動,整體RT降低了20%。

現在,支付寶的業務已經100%跑在OceanBase上,作為我國第一個自研的金融級分散式資料庫,經過六年的雙11錘鍊,它也已經具備了走出螞蟻金服、走向更廣闊天地的底氣。

今年雙11中,支付寶支付業務100%切換到OceanBase內建的Oracle相容模式上,支援Oracle語法以及儲存過程優化的同時,又兼具OceanBase的分散式能力,如分散式分割槽表、全域性事務等,響應時間也更加平穩。雙11之後,OceanBase2.2也將正式公開發布。

“不過,在別人覺得我們什麼都行的時候,我們反而會冷靜下來,想想自己還有哪些不行的地方。”楊傳輝說,對技術上一切未知的敬畏,才能讓大家走得更遠。

圖智慧:複雜金融關係的最優解

“過去很長一段時間圖資料庫和圖計算一直停留在學術研究階段,行業應用場景不多,是因為沒有強的場景驅動,所以市場沒有太多發展”, 螞蟻金服計算儲存首席架構師何昌華指出。但是反過來看,圖相關的產品近年來熱度不斷攀升,其核心原因是因為強場景的驅動,特別是金融場景,它非常善於處理大量的、複雜的、關聯的、多變的網狀資料,通過節點和關聯的資料模型去快速解決複雜的關係問題。

螞蟻的一站式圖平臺的誕生,也有著鮮明的螞蟻金服特色,同樣是“被業務倒逼出來的”。

螞蟻金服在2014年左右就開始跟進社群的圖計算的研究,當時的團隊在一些開源產品基礎上進行了小規模的嘗試,做了之後發現效果很好,圖資料庫能夠很好地和金融、社交業務結合起來。但是,螞蟻金服有著巨大的資料量,需要以分散式架構來支撐高併發的大資料量和大吞吐量,但當時無論是開源還是商業資料庫產品都只是單機版,都難以適應螞蟻金服如此大的資料量和複雜的環境。於是,艱難而又步步紮實的自研之路開始了。

最開始,要解決的是圖資料的儲存和線上查詢的問題。

從資料量來看,分散式架構是唯一的選擇。從滿足金融場景高併發低延時的需求來看,選擇原生圖結構而非基於關係型資料庫基礎上封裝圖資料,成為必然。但也因為以上兩點,導致整個開發難度大大增加。

從2015年初團隊開始組建,經過“冬練三九、夏練三伏”的苦修,以及在程式碼、運維、穩定性等每一環節的極致追求,第一個圖資料庫版本GeaBase在2016年初發布。

而這時候,剛好遇到支付寶史上最大一次改版,模組化功能被替換成資訊流,大大強化了社交關係屬性,GeaBase開始接入支付寶鏈路。

百鍊成鋼,經過幾個月的壓測,2016年6月,新版支付寶上線,GeaBase迎來了第一筆流量。接著幾年,從支付寶大改版到新春紅包再到雙11,GeaBase迎來了業務的綻放期,到2019年雙11,GeaBase雙11主鏈路上單叢集規模突破萬億邊,點邊查詢突破800萬QPS,平均時延小於10ms;成為支付寶核心鏈路上非常重要的一環;

資料儲存和查詢的問題解決了,緊接著要解決的是分析計算的問題。

在一開始,我們思考的是如何在海量的圖資料裡做資料探勘的問題。在面對千億乃至萬億級規模,幾TB到幾百TB的資料,用超大記憶體物理機和高速網路來實現離線全圖計算,對企業來說不太現實,資源也存在極大的浪費。因此,我們重點放在如何在滿足業務功能/效能需求的同時,利用碎片化的現有資源,實現 “按需計算”的能力。

因此,2017年,我們在海量資料基礎上,設計了一套離線計算的框架,提供自適應的分割槽策略,資源消耗能比同類產品降低一個數量級,同時效能還能遠遠優於GraphX等開源產品。

同時,為了方便業務演演算法人員根據其業務進行二次開發,還開放了C++和JAVA的介面,除了業界常見的圖程式設計框架的Pregel、GAS,我們還做了一定的“微創新”和能力擴充套件,提供了更高效能,更加豐富功能的介面。

全量分析計算的事情解決了,但隨著“310”策略的推進,風控業務的發展,對分析的時效性的要求越來越高,分析需要更快,更實時,2018年,我們開始考慮線上圖計算的能力。

有時候,並不是所有業務都需要進行復雜的圖分析,而是在滿足一定的條件後才開始進行子圖的迭代計算。最後,基於圖的迭代計算的結果,在進行資料鏈路的處理後再提供給線上使用。

因此,一個場景在完整的計算鏈路中,需要流計算和圖計算兩種模態的融合計算。我們打破了傳統計算模態的邊界,提供流圖融合的計算系統。通過將資料流和控制流相結合,並提供動態DAG的能力,從而實現按需計算,彈性擴縮容。

使用者可以通過一套統一的DSL(SQL+Gremlin/GQL)、一套計算系統來實現完成流圖融合的鏈路,實現基於資料驅動的線上圖計算能力,同時,減少了使用者的學習、運維成本。

在2019年雙11上,線上圖計算技術大放異彩,通過秒級決策,在花唄等場景幫助業務效果提升12倍。

從“海量”圖儲存,到離線全圖 “按需計算”,再到“實時”線上圖計算,螞蟻的圖智慧技術跟隨業務一步步發展,壯大。

融合計算引擎:新計算威力初現

今年的雙11還落地應用了一套新的“神器”——融合計算引擎,它耗費了近百位工程師一整年的心血。

融合計算引擎的基礎,是螞蟻金服聯合 UC Berkeley 大學推進的新一代計算引擎Ray,它很年輕,2018年融合計算引擎專案啟動時,它只有幾萬行程式碼,距離金融級線上環境的應用還差得很遠。

“我們用了一整年,把它增加到了幾十萬行程式碼,並且涵蓋了C++、java、Python等所有語言。”螞蟻金服資深技術專家周家英說。

至少4個團隊在共同“養育”這個引擎,四個奶爸帶娃,磕磕絆絆,在所難免,難度遠遠大於一個團隊負責一個引擎。

但開發時的“難”,是為了應用時的“簡”。

在計算引擎執行層面,不同計算模式的資料是可以在引擎內共享的,很少藉助第三方儲存,因此對外部儲存和網路傳輸的開銷也都有極大的節省。

在應用方面,融合計算引擎不僅能夠解決金融場景中需要銜接多個不同計算模式的難題,還能支援各種不同時效性的業務,並在支付過程中提供秒級智慧決策能力。

並且隨著融合引擎的落地,也改變著技術同學的研發習慣。我們希望通過融合計算引擎,達成研發態,執行態,運維態三位一體的統一:例如在動態圖計算場景,計算開發同學只需要編寫一個流+圖的計算作業,就可以實現秒級6度鄰居的圖迭代計算;同樣在機器學習領域,通過編寫一個包含流+模型訓練+服務的計算作業,就可以實現端到端秒級模型匯出的線上學習能力。這樣從研發到執行態,計算整體效率都得到了極大提升。

2018年,融合計算就在花唄反套現的智慧甄別之中表現卓越。到了2019年,融合計算引擎已經在支付寶不同場景中落地——圖計算在花唄,螞蟻森林等場景中大規模上線,圖資料庫Geabase突破萬億邊。

2019年支付寶新春紅包活動中,融合計算引擎用線上學習能力支援了新春紅包的智慧文案,讓它的演演算法跑在了新的線上學習的體繫上。這個體系融合了流計算和機器學習,讓機器學習的模型迭代速度從以前的小時級別,提升到了現在的秒級別。本次雙11時,它在“支日曆”的推薦演演算法方面發揮了重要作用。

通過融合流計算、服務和併發查詢,融合計算引擎減少了60%的機器資源使用,把端到端的延遲壓低到了毫秒級,同時還能支援金融網路的業務查詢和監控。

今年雙11中,融合計算引擎在至少三個場景中成功落地並被驗證可行,“還跑在了螞蟻金融級關鍵決策鏈路上。”周家英不無興奮,“這證明瞭我們的計算引擎具備了金融級的能力。”

事實上,無論是在雙11這樣的極端大考場景中,還是在支付寶、阿里巴巴,以及各個網際網路科技公司的日常應用場景中,資料驅動的業務也越來越多。相應地,海量資料的實時處理、分析和應用,以及人工智慧、深度學習等新技術的開發,都在要求著更強大的計算能力,以及能夠應對複雜場景的多種計算模式。

面對未來,更多的是未知——我們尚且不知未來會出現什麼樣的場景,這些場景會要求什麼樣的計算模式和計算能力。“融合計算是真正意義上的新計算的第一步。”螞蟻金服計算儲存首席架構師何昌華說。