03.06 支付寶工程師如何完成一個三分之一中國人蔘與的超大項目

2019年新春是支付寶五福紅包活動第四次與全國人民見面。今年4.5億用戶參與。可以說,三分之一的中國人已乘上了互聯網新年俗的時代浪潮。

支付寶工程師如何完成一個三分之一中國人參與的超大項目

隨著技術的發展,年俗與時俱進,但年味不曾稍改。中國人過年,圖的就是順遂、圓滿、喜慶。紅包的意義不僅在於那一個個代表人民幣的數字,更是年味的體現:集福卡象徵“五福臨門”,親友互贈福卡代表誠摯祝福,今年新增的“沾沾卡”等玩法,也飽含了“沾喜氣、沾好運”的美好願望。

正是因此,這一活動對於用戶體驗的要求堪稱苛刻:掃福、贈福、沾福……福氣需要手到擒來,所以系統的響應必須要如絲般順滑;活動結束後開獎,紅包金額越快到賬越好,因為新年的喜悅不容等待;同時,用戶之間的互動功能也需要充分保障,畢竟中國人的年是團圓的年,是人與人之間相互連接、分享祝福的節日。

要在數億用戶的規模之上實現這樣的用戶體驗絕非易事。4.5億人每點擊一次屏幕,海量的數據都會匯聚成潮水湧入系統。如何保證系統“不卡、不錯、不宕機”,讓每一個用戶都能開開心心過大年?為此,螞蟻金服的各個技術團隊合力搭建起完整的鏈路,共同守護互聯網時代的新年味。

“快”的秘密:Geabase圖數據庫和數據智能算法

今年五福紅包活動中新增的玩法“沾沾卡”,讓用戶可以“沾”取好友的福卡或“花花卡”(可代還全年花唄賬單的獎品卡),在使用“沾沾卡”的頁面上,用戶可以看到一張好友排名榜,這份榜單按持有福卡總數的多少排列,用戶可以很輕鬆地找到手握大量福卡的“土豪”,去沾沾他們的豪氣。

支付寶工程師如何完成一個三分之一中國人參與的超大項目

這一玩法互動性極強,獎品本身又足夠有吸引力,可謂一大創舉,但實現起來遠非那麼輕鬆。“好友福卡排名榜”看上去只需要計算每個好友的福卡總數,再進行排列,是個很簡單的計算問題,但幾億用戶參與的情況下,假設每人有10個好友,查詢量就會達到數十億級別;而且每個人所持有的福卡總數都是實時更新的,這份榜單每時每刻都會波動,實時計算會對數據庫造成巨大的壓力。

Oracle、Mysql等普通的關係型數據庫,在面對這種問題時往往顯得力不從心。用關係型數據庫查詢“用戶的好友”,尚且能在毫秒級完成;但如果要查詢“好友的好友”,耗時就會指數級上升。隨著查詢深度的深入,時延很快就會高到難以接受的程度:查詢深度達到3時(好友的好友的好友),關係型數據庫的耗時將超過30秒;而當深度達到5時,關係型數據庫就完全“懵”了,無法反饋查詢結果。

也就是說,假如用普通的關係型數據庫來支持“沾沾卡”的活動,用戶可能會遭遇點擊頁面後大半天沒反應,甚至頁面崩潰的情況,根本談不上用戶體驗。

“關係型數據庫裡缺乏關係。”螞蟻金服技術專家浩壹引用《Graph Databases》的觀點表示,為了在海量數據裡完成高併發、低延時、毫秒級的查詢和分析,需要一種把關係作為獨立實體進行存儲的數據庫——也就是圖數據庫。“螞蟻金服自主研發的分佈式圖數據庫GeaBase,有非常多的場景應用,基本覆蓋了五福紅包所有應用場景。”

由於數據的存儲結構和查詢規則不同,查詢深度對於Geabase的速度幾乎沒有顯著影響,當關系型數據庫捉襟見肘地花上30秒才能給出反饋時,Geabase只需要0.168秒;關係型數據庫難以給出結果的查詢,Geabase也只需2秒即可完成。

這樣的數據庫,可以實現幾億用戶每個人的好友排行榜都在毫秒級內實時更新可以支持“沾沾卡”這樣的活動,還能夠給以前受到系統性能而難以實現的業務構想以空間。現在,在性能優越的數據庫的支持下,也能想怎麼玩就怎麼玩。

另一方面,藉助數據智能算法,決策效率也取得了飛速提升。以前,應對這樣大型的活動,要花大量時間對數據指標做實時分析,每次分析時間可能會長達3天。“但今年,藉助螞蟻金服的金融級實時數據智能平臺的能力,不僅可以在分鐘級的尺度上掌握數據指標的異動,還能即時獲得智能系統提供的決策建議。” 螞蟻金服高級技術專家張榮華介紹說。

在這個數據智能平臺尚未成熟之前,用螞蟻金服數據平臺部資深總監周衛林的話來說,決策有如“在黑暗裡開車”。一項策略實施之後,需要一段時間才能監測到反饋,再根據反饋來分析和調整,中間耗時很長,就像是“開車時打了方向盤,車卻要隔好久才能轉彎,司機心裡都沒底”;但現在有了金融級實時數據智能平臺,有了流批一體的計算能力,反饋、分析、決策建議的流程從幾天縮短到小時級,隨時調整隨時都能看到結果。

數據智能取代了“人工”智能,智能平臺的數據洞察取代了“人肉”的分析和決策,效率飛漲, “以前紅包活動期間,時時刻刻都想著數據指標,連吃飯都沒心思,現在有了數據智能平臺的支持,就輕鬆多了。”

今年的五福紅包活動中,數據智能和AI還被運用於生成智能文案和個性推薦禮券。在數據智能的幫助下,“刮刮卡”禮券頁面也做到了千人千面,自動匹配用戶的需求特徵,讓用戶不再會被那些“用不上”的禮券打擾。

“穩”的秘密:單筆業務秒級稽核,分鐘級別“極致彈性”

5億現金,即使不考慮花哨的玩法,要把這筆鉅款準確無誤地分發到中獎用戶的賬戶中,本身就是一場巨大的考驗。每一筆金額雖不算大,但都是真金白銀,不容有誤;而且活動截止之後,錢要多久才能到賬,也是關係到用戶感受的重要指標。

2018年的五福紅包活動結束後,中獎用戶收到獎金普遍是在大年初一的凌晨兩三點,也就是活動截止後四五個小時,紅包的金額才到賬。“去年,每一筆單筆業務的稽核需要5-10分鐘,海量數據的全量核對要花一個半小時。”螞蟻金服技術專家鄭天壽表示。

而到了2019年,等待的時間被縮短到了分鐘級。“今年整套體系已經實現了單筆業務的秒級稽核,4.5億用戶的數據全量核對僅僅花了5分鐘。”鄭天壽不無自豪地說,絕大部分用戶在新年零點之前就收到了紅包。

“這才是真正的拜年紅包。”周衛林表示,得益於交易稽核速度的大幅提升,往年需要徹夜盯著系統以保障紅包安全入賬的運維團隊,今年剛過零點不久就可以回家過年了,“可說是皆大歡喜。”

錢發得這麼爽快,安全如何保障?其實在正式“上崗”之前,這套體系已經在技術團隊內部的紅藍演習之中經歷過千錘百煉了。為了模擬各種可能的突發情況,不僅“藍方”給“紅方”出難題,同時還通過機器識別能力,識別出線上系統弱點,生成了一系列攻擊方案,來考驗系統的整體識別能力和應急能力。

資金安全要有所保障,系統穩定也必須有所保障。和每年的雙11一樣,五福紅包這樣全民參與的活動,洪峰流量對於服務器的承壓能力來說是一場大考。每個中獎邏輯後面都有數十條數據,整體來說就有幾十億的數據需要同步。這些數據需要在2分鐘內完成同步,併發數高達每秒上千萬。

經歷過歷年的雙11,只要事先做好準備,承接這樣的瞬時流量壓力已經不算最難的事,但難就難在如何以更有效率,更節省成本的方式調配服務器資源。“服務器是大促類活動最主要的成本。” 螞蟻金服高級技術專家田啟傑表示,最重要的是,“需要從什麼時候開始持有資源,從什麼時候開始把資源還到大的池子裡去”。

螞蟻金服的高性能分佈式數據庫系統OceanBase在這場大考之中功勞卓著:“OB能夠在分鐘級別內把資源能力加上去,在活動之後把資源收回來,我們把這個稱之為極致的彈性。”

分鐘級別的彈性,意味著當流量的洪峰到來時,在極短的時間內,系統就能調度資源去承接流量,而在洪峰過後,系統也能迅速地返還資源,避免資源浪費,儘可能地節省成本。

和雙11一樣,支付寶五福紅包的系統也經歷過嚴苛的全鏈路壓測。但用田啟傑的話來說,在大促類的活動日益頻繁的今天,舉全體之力保障一次活動的順利進行已經不是最重要的問題了,更重要的是“在大促常態化情況下,我們的穩定性能夠一如既往不出現任何問題”。因為不管舉辦什麼樣的活動,支付寶本身作為一款已深入社會生活方方面面的金融應用,都必須全年無休地安全平穩運行。

以往一年一度的“大考”,如今已日漸成為每個季度甚至每個月都要面對的常態。這意味著,系統的彈性、穩定性和高可用性也需要成為常態。以守護互聯網時代的新年味為開端,螞蟻金服的技術團隊,其實每時每刻都在守護著與我們每個人的日常生活都息息相關的普惠金融系統。

數據顯示,在2019年1月25日至除夕的11天裡,超過4.5億人參與了集支付寶五福活動,相當於每3箇中國人就有1個人在參與集福和送福。和去年相比,今年參與集支付寶五福的人數同比增長40%,其背後的技術挑戰也更加複雜。2019年3月7日,支付寶新春紅包線上技術峰會將揭秘五福紅包背後業務層挑戰與實現方案、技術難點和攻克手段、優化細節和保障方法。

支付寶工程師如何完成一個三分之一中國人參與的超大項目

支付寶線上技術峰會網址:https://tech.antfin.com/activities/216?chInfo=zx


分享到:


相關文章: