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


分享到:


相關文章: