今天你开奖了吗?细数大厂春节红包背后的技术支撑

整理|田晓旭
新年到 , 各家大厂的“撒币”活动终于开奖了!这次你赚到了多少钱?
除了大年三十看春晚 , 参与各大App的春节红包活动也逐渐成为了中国人的过年传统 。 红包也不再只是“钱” , 而是承担了更多的角色 , 成为了应用的流量入口和增长引擎 。 春节红包的实现 , 背后少不了大数据、云计算、支付结算等新技术的支持 。 本文搜集了支付宝、微信、快手、QQ四家大厂公开分享过的春节红包技术实践 , 以飨读者 。
1今天你扫福了吗?支付宝红包的实现
“敬业福 , 你扫到了吗?”相信大家最近应该经常听到这句话 。 支付宝集五福已经成为了大多数人春节的必备互动 , 2020年春节有3亿多人集齐了五福 , 而今年的集福活动又有了新花样 , 除了传统的AR扫福和蚂蚁森林 , 增加写福字和芭芭农场 。
其中 , 扫福字得福卡可能是参与人数最多的 , 为了解决高并发的问题 , 采用了客户端+服务端并行处理的架构体系 , 可支持两种识别方式:所有图片都传至服务端做处理 , 这样识别精度更高 , 但是服务器端能处理的数量有限;二是先走客户端检测 , 客户端无法识别的再上传服务端 。 客户端检测能力稍弱 , 但将计算能力分散到各终端 , 能极大缓解服务端的压力 。
这么多人参与的集五福活动 , 其背后的技术支撑是怎样的?支付宝团队曾经分享过他们的技术保障 , 在数据方面比较特别的是采用了GeaBase和OceanBase两款数据库 。
由于集五福活动有很多用户互动的场景 , 以好友福卡排名榜为例 , 虽然看上去只是计算每个好友的福卡总数 , 再进行排序 , 但是当用户量级上去之后 , 这个事情的难度就增加了 。 假设每人有十个好友 , 参与活动的用户是亿级 , 那么查询量级就会达到数十亿级 , 并且需要实时更新福卡数量 。
在这种情况下 , Oracle、MySQL等普通关系型数据库的表现不是特别突出 , 查询用户好友还可以在毫秒内完成 , 而查询好友的好友 , 耗时就会指数级上升 , 查询越深 , 耗时越长 。 因此 , 在集五福的应用场景中采用了蚂蚁金服自主研发的分布式图数据库GeaBase 。
由于数据的存储结构和查询规则不同 , 查询深度对于Geabase的速度几乎没有显著影响 , 关系型数据库30秒才能得到查询结果 , 而GeaBase只需要0.168秒;关系型数据库难以给出结果的查询 , Geabase也只需2秒即可完成 。
在集五福这类全民活动中 , 洪峰流量对于服务器的承压能力来说是一场大考 。 在开奖的那一瞬间 , 就是交答卷和出成绩的时刻 , 每个用户的中奖逻辑后面都有数十条数据 , 整体就有几十亿数据需要同步 。 这些数据需要在2分钟内完成同步 , 并发数高达每秒上千万 。
如何更有效率 , 更节省成本地调配服务器资源呢?OceanBase在其中发挥了作用 , 它可以在分钟级别内调度资源承接流量 , 也可以在洪峰过去之后 , 快速回收资源 , 避免浪费 。
2今天你抢红包了吗?微信红包的实现
过年期间 , 在各种微信群中抢红包已经成为一种大家喜闻乐见的欢度春节的方式 。 今年微信红包比较新鲜的变化是可以自己制作个性化的红包封面 。
微信红包的使用步骤 , 相信大家都很熟悉 , 主要包括包、发、抢、拆、查询发送红包和收红包数量 , 其中比较关键的是发红包和抢红包 。 这是我们普通用户的角度 , 从微信团队的角度看 , 红包系统由三部分组成:信息流、业务流和资金流 。 这三部分在组织架构上由不同的后台团队完成:信息流——微信后台 , 业务流——微信支付后台 , 资金流——财付通后台 。

今天你开奖了吗?细数大厂春节红包背后的技术支撑
文章图片
2016年除夕活动时的红包系统架构
今天你开奖了吗?细数大厂春节红包背后的技术支撑】抢红包阶段如何做到既轻量又可靠?根据微信团队介绍 , 主要是通过三种方式:
零RPC调用:一般情况下客户端发起的请求都是通过接入服务转发给具体的业务服务处理的 , 会产生RPC调用 。 但摇一摇逻辑直接嵌入接入服务中 , 接入服务可以直接处理摇一摇请求 , 派发红包 。
零数据库存储:在抢红包的过程中 , 微信团队完全不使用数据库 , 可以达到几个数量级的性能提升 , 同时可靠性有了更好的保障 。
异步化:用户抢到红包后不会同步进行后续的账务处理 , 请求会被放入红包异步队列 , 再通过异步队列转给微信支付后台 , 由微信支付后台完成后续业务逻辑 。