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 条评论
登录 后参与评论

相关文章

来自专栏云计算D1net

为什么DevOps和云计算在一起至关重要

软件的定义特性是软性的。举个例子,将翻盖手机与智能手机进行对比。如果想改变翻盖手机按键的颜色,由于按键是一个实体塑料件,这将需要更改其制造过程。从提出想法到市场...

3157
来自专栏人称T客

Container 技术是否能取代VMware虚拟化?

独家专访VMware执行长Pat Gelsinger:VM对战Container如何胜出? 全云端IT,或NoOps、Container和微服务设计为主的Ne...

3214
来自专栏SDNLAB

ONOS发布1.2版本Cardinal——专注可扩展性

开源软件定义网络(SDN)项目ONOS公布1.2版本——Cardinal,并声称其软件平台在多协议支持、性能增强、APIs方面支持范围更广。 ? 添加的新功能主...

2675
来自专栏Rainbond开源「容器云平台」

视频 | Rainbond与Service mesh微服务架构

一体化架构为何遭遇强拆?开发语言为何自由选择?资源利用率为何大幅提高?微服务架构插件体系,应该怎样结合?独立部署、升级、替换、伸缩的微服务,运维应该是喜是忧?管...

3128
来自专栏梦里茶室

【转载】淘宝架构框架发展史

转自 http://www.361way.com/taobao-architecture/1948.html 出处《淘宝技术这十年》      一、个人网站  ...

3745
来自专栏云计算D1net

云中的连续监测

云计算服务可以动态分配、使用和取消分配资源,以满足高峰需求。几乎任何系统都需要比其他系统更多的资源,而云计算允许计算、存储和网络资源随着这种需求而扩展。

940
来自专栏安智客

Intel芯片架构中TEE的实现技术之SGX初探

应该来说可信执行环境不仅仅指的是基于ARM的Trustzone技术的各种安全操作系统,还包括基于intel公司提出的SGX技术,以及虚拟化机制,比如L4微内核等...

2648
来自专栏大数据文摘

快播CEO认罪,成人网站对技术的要求有多高?

1575
来自专栏安全领域

剖析物联网解决方案

物联网(IoT,Internet of Things)是一个强大的变革力量,它是数字商业利用来融合物理与数字世界的基石。

3946
来自专栏杨建荣的学习笔记

调需式优化的简单实践 (r10笔记第1天)

作为DBA总是会有现场的救火工作,而如果尽可能早一些介入需求,设计,开发阶段,可能就会杜绝很多潜在的性能问题。很多问题都是如此,都是逐步积累,最终在某一...

3284

扫码关注云+社区