专栏首页社区的朋友们QQ 红包技术方案全解密 (二)
原创

QQ 红包技术方案全解密 (二)

作者:许灵锋

接上文 《QQ红包技术方案全解密 (一) 》

三、红包创新玩法挑战

春节红包大战,从企业红包演变到刷一刷红包、个性化红包和AR红包,玩法不断创新,用户体验更好,活跃度提升,参与人数也从2亿增长到17年春节的3.42亿。

  1. 个性化红包

QQ个性红包是在红包外观上的一次大胆尝试,借助该功能,用户可使用霸气的书法体将自己的姓氏/或其他文字(提供自动简繁体转换)镌刻在红包封皮上。此外,我们还提供了具有新年氛围的贺岁红包、与腾讯IP紧密结合的QQ family、游戏形象、动漫形象等卡通红包,大大提高了QQ红包的趣味性与观赏性。个性红包功能上线后,有超过30%的红包用户选择使用个性红包。在2016年春节期间共有1500万用户使用该功能,2016年除夕当晚突破8千万的个性红包发送量。

个性红包在普通基础上,允许用户修改红包封皮,展示个性,应合场景,因此设计的要点是使用户操作顺畅,既保持发、抢红包的流畅体验,又能显示个性和有趣好玩。

个性化红包流程架构如下图所示:

从上图可以看出,简化后的红包的发放过程经历红包终端->财付通->红包后台->手QAIO(聊天交互窗口)->拆(抢)红包页面等过程,流程较长(忽略了一些细节,实际流程更复杂),在这些步骤过程中如果每一步都走后台判断个性化红包状态,必然影响到红包的发放流畅性。

为了尽量不影响用户发红包体验,个性化红包在架构和运营上作了很多解藕和柔性设计。包括个性字体提前绘制,资源预加载,功能开关和容灾柔性处理等。

字体提前绘制

个性化红包支持所有简体与繁体汉字,并支持部分简体汉字转换成繁体汉字,为了改善使用“姓氏红包”用户的体验,我们把常用的300个姓氏,使用预生成的方式,在用户手Q空闲的时候生成常用的姓氏图片保存到本地。其他的非常用姓氏,在展示的时候合成,合成一次保存在本地,下次在本地读取。

手Q终端在空闲时绘制好字体贴图,支持定时更新背景图和字体库,对非常用字,则启动个性化字体引擎生成对应的个性化贴图。

用户在发放或收到红包时,个性化背景和字体贴图已经生成好,不需要再生成,收发红包流畅体验无损。

资源预加载

个性化红包封素材提前制作好,上传到CDN网络,手Q在空闲时提前从CDN下载素材文件,并定时检查素材更新情况,及时更新。

功能开关

用户是否设置个性红包,选择的个性红包贴图样式,是否启用个性红包等信息,如果每次判断都从后台拉取,势必增加后台压力。用户对个性红包的设置信息,其实变化不大,并且访问红包商场实时设置的状态的结果在手Q终端是存在的。因此我们设计将这些用户状态FLAG在手Q登录时,从后台拉取一次后保存在手Q终端,在发红包的过程中将FLAG信息传递到下游服务中,通过红包商城设置的个性化红包标志,实时更新手Q本地配置。

这样的设计有几个好处:

  • 用户的个性化设置不再依赖于后台,发红包过程完全本地操作,没有任何延时,不影响红包的发放。
  • FLAG标志可以作为容灾开关,如果临时取消个性红包,或后台故障,可以临时屏蔽个性红包功能,恢复为默认红包样式,保障任何时刻红包功能正常可用。
  • FLAG标志可支持扩展,在红包后台可以根据扩展,支持付费红包样式(付费购买)、特权红包样式(如超会专享)等,支持红包商城扩展各种各样的个性化红包。
  • 除了从后台拉取FLAG,当业务有调整导致FLAG变化,红包后台可以向手Q终端主动push FLAG状态,使得用户及时感知变化,进一步增强用户使用体验。

容灾柔性处理

相对于手Q平台功能,个性红包系统相对独立,运营和更新很快,系统各功能组件出现问题的几率可能较多,如果个性红包业务出现问题,而影响到正常红包发放或手Q功能的使用,会对QQ口碑造成很大负面影响。我们在系统中设计了多处容灾和柔性处理措施,在个性红包业务异常时,能降级提供服务,最差时取消个性红包功能。

柔性措施一:用户登录时拉取个性红包FLAG失败时,采用默认红包样式。 柔性措施二:红包后台向个性化红包后台拉取个性化设置鉴权详情(是否付费、是否会员专享等)时,如果拉取异常,采用默认红包样式。 柔性措施三:个性化红包由用户输入姓氏,指定显示文字,可能遇到敏感字或需要临时下线,可以通过向手Q下发FLAG标志,临时取消个性红包功能,恢复到默认红包样式。

  1. AR红包

AR红包是“LBS+AR天降红包”的简称,这个创新的玩法得到了用户的一致好评,参与用户2.57亿次,共计领取红包和礼券20.5亿个,获得了口碑和活跃的双丰收。

缓存设计

LBS+AR红包与以往的红包最大的不同在于多了一重地理位置关联,全国有上千万的地理位置信息,结合活动的任务奖品数据产生了海量的配置数据,而这些数据都需要快速实时读取。这是系统设计的一大挑战。

配置数据有以下特点:

  • 数据量很大(亿级),数据间有紧密的关联,我们采用MySQL数据库集群存储,并构建有Web可视化配置投放平台,实现自动容灾和备份的功能;
  • “一次配好,到处使用”,配置读量远高于写量,基本思想是设计开发一种缓存,放弃写性能,将读性能优化到极致。

上千兆的配置数据,如何供抽奖系统快速检索?考虑到业务使用场景、配置数据大小及MySQL性能,可以采用预先构建全量缓存并进行有序组织,由同步模块负责将构建好的配置数据同步到抽奖系统,供业务进程直接使用。为保证配置数据完整性,构建缓存采用双Buffer设计,只有构建或同步完成后才切换到最新配置。

地图打点与查点

基于LBS的红包活动离不开地理位置相关的业务交互。在AR红包中,用户打开地图会定期向后台上报坐标,后台需要根据坐标获取周围可用的活动任务投放点,投放点事先都会进行安全筛查,去掉具有安全隐患的区域,避免给用户带来人身安全问题,本节主要介绍如何管理这些投放点。

地图格子

将整个二维平面根据坐标分成边长相等的正方形格子,根据用户的坐标用简单的数学运算即可获取相应的格子ID,时间复杂度O(1)。一个格子是一次查询的最小粒度。每次查询会返回以用户为中心周围5*5共计25个格子的任务点。

打点

红包是以任务维度投放的,每个任务关联一个POI集合,每个POI集合中包含几个到上百万不等的POI点,每个POI点都有一个经纬度信息。

打点即是事先建立格子到任务列表的映射。所有格子数据有序组织并存储在共享内存里,使用二分查找提升读性能。

查点流程

(1) 客户端上报经纬度。

(2) 根据经纬度计算中心格子ID。

(3) 根据中心格子ID及半径配置,获取周围格子列表。

(4) 在打点系统中获得此片区域全部POI和任务信息。

(5) 检查任务状态后返回给客户端。

采集系统

采集系统主要负责汇总各行政区红包发放状态数据,主要提供以下功能:

(1)实时返回区级行政区红包计数;

(2)实时接受主逻辑的查询,返回奖品发放状态;

(3)返回活动预告以及参数配置等辅助信息。

由于红包是按行政区进行投放的,每个行政区约投放10个任务,每个任务又关联多种类型的红包,如果每次查询区级红包余量时,都实时计算和汇总红包状态数据,扩散带来的包量开销会比较大,为此,我们还是采用双Buffer缓存来解决该问题,一个进程负责将采集到的数据写到缓存,另一组进程提供查询服务。另外,还可以根据存储层的压力,适当地调整采集的频率,使得统计数据尽可能实时。

四、总结

自2015年起,历年除夕当天QQ红包收发情况如下表所示,可以看出,参与人数和红包首发总个数都是节节升高。

QQ红包业务复杂,海量访问,涉及业务多,流程长,项目的成功离不开相关兄弟部门的大力支持和能力合作,特别感谢即通产品部、财付通、即通平台部、SNG市场部、SNG商业广告中心、增值渠道部、社交用户体验设计部、集团市场与公关部、增值产品部、社交与效果广告部、网络质量部、即通综合部、架构平台部、社交平台部、网络运营部等15个兄弟部门相关同事的付出和给力支持。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • QQ 红包技术方案全解密 (一)

    QQ红包的技术方案究竟是怎样的?其整体架构如何?重要的系统是如何设计的?为了保证用户的体验,手Q终端做了哪些优化?本文将从架构开始,到手Q终端优化,再到个性化红...

    serena
  • Kaggle 实战:Ghouls, Goblins, and Ghosts

    本例使用R语言中的决策树以及随机森林package对kaggle的一个分类问题解题的全部过程。本文需要读者对机器学习中的决策树、随机森林的原理有所了解,并且知道...

    serena
  • TAF 必修课(三):Server 启动全过程

    本节对 Taf-server整个启动流程进行解析,思考多协议支持,开发运营一体化。

    serena
  • “史上最全”2015春节抢红包攻略

    大数据文摘
  • 除夕抢红包你准备好了吗?大数据教你怎么抢红包手气最好

    <数据猿导读> 还记得元旦抢红包的空前盛况吗?微信表示也hold不住啦,然而元旦过去了,春节还会远吗,今天小编特意准备了一份抢红包秘籍,让你在除夕晚成为手气第一...

    数据猿
  • 为什么微信红包长这样?

    微信红包在设计上是如何实现在快捷、直接的简化信息框架内,满足大家的好奇心和情感需要的呢?

    腾讯大讲堂
  • 谈钱“上”感情——漫谈微信红包的破窗效应

    陆诗雨  腾讯研究院研究员  唐文杰  腾讯研究院助理研究员   收红包、送红包,是中国人长久以来的传统习俗。小小的红色纸袋里塞下最实惠、最接地气的铜...

    腾讯研究院
  • 微信抢红包实现方式

    抢红包流程 红包生成,数据库中创建红包信息,把红包的ID、数量放入缓存 用户抢红包,分为抢和拆两个动作,抢动作只是决定用户是否得到红包资格,如果抢到了,进入拆动...

    dys
  • 2019春节红包报告:几个数据带你回顾薅红包大混战

    随着今日元宵佳节的到来,各大互联网厂商的节日营销活动渐渐偃旗息鼓,长达半个多月的春节红包鏖战终于落下了帷幕。回首2019春节,一面是“红”,一面是“黑”——亿元...

    腾讯大讲堂
  • 2019春节红包报告:几个数据带你回顾薅红包大混战

    随着今日元宵佳节的到来,各大互联网厂商的节日营销活动渐渐偃旗息鼓,长达半个多月的春节红包鏖战终于落下了帷幕。回首2019春节,一面是“红”,一面是“黑”——亿...

    腾讯防水墙

扫码关注云+社区

领取腾讯云代金券