接上文(一)
春节红包大战,从企业红包演变到刷一刷红包、个性化红包和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 红包技术方案全解密 (二)相关推荐

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

    前言 自2015年春节以来,QQ春节红包经历了企业红包(2015年).刷一刷红包(2016年)和AR红包(2017年)几个阶段,通过不断创新玩法,活跃度节节攀升,成为春节一大玩点,给火红的春节带来一抹 ...

  2. QQ红包技术方案全解密

    转自: http://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&mid=2650995675&idx=1&sn=712855991e2 ...

  3. 全面解密QQ红包技术方案:架构、技术实现、移动端优化、创新玩法等

    本文来自腾讯QQ技术团队工程师许灵锋.周海发的技术分享. 一.引言 自 2015 年春节以来,QQ 春节红包经历了企业红包(2015 年).刷一刷红包(2016 年)和 AR 红包(2017 年)几个 ...

  4. 全面解密QQ红包技术方案:架构、技术实现、移动端优化、创新玩法等...

    本文来自腾讯QQ技术团队工程师许灵锋.周海发的技术分享. 一.引言 自 2015 年春节以来,QQ 春节红包经历了企业红包(2015 年).刷一刷红包(2016 年)和 AR 红包(2017 年)几个 ...

  5. 一文看透汽车芯片!巨头布局技术路线全解密【附下载】| 智东西内参

    来源:智东西 摘要:一文看透汽车芯片!巨头布局技术路线全解密 智能驾驶涉及人机交互.视觉处理.智能决策等,核心是 AI 算法和芯片.伴随汽车电子化提速,汽车半导体加速成长,2017 年全球市场规模 2 ...

  6. 某大型银行深化系统技术方案之十二:服务层之服务分类

    传送门☞Android兵器谱☞转载请注明☞http://blog.csdn.net/leverage_1229 服务层 服务层主要体现了SOA体系下的组件复用和业务复用机制.服务的边界定义决定于粒度和 ...

  7. 前端实现红包雨功能_最全解密微信红包随机算法(含代码实现)

    code小生 一个专注大前端领域的技术平台公众号回复 Android加入安卓技术群 "  1.引言 这个系列文章已经整理了10篇,但都没有涉及到具体的红包算法实现,主要有以下两方面原因.一方 ...

  8. 最全解密微信红包随机算法(含代码实现)

    code小生 一个专注大前端领域的技术平台 公众号回复Android加入安卓技术群 " 本文内容编写时,参考了网上的资料,详见"参考资料"部分,感谢分享者..本文已同步发 ...

  9. 架构09 社交软件红包技术01

    4.1.接入层 接入层是红包后台服务的大门,负责抽奖请求预处理,确保有效的请求才透传给后端服务.为保证自身高可用.高稳定,接入层还可实时控制手机 QQ 请求频率,避免海量请求压垮接入层,出现不可控局面 ...

最新文章

  1. JS-只能输入中文和英文
  2. RMSE、MAE等误差指标整理
  3. 公众号质量改进调查问卷
  4. 【转】基于 Android NDK 的学习之旅-----数据传输(引用数据类型)
  5. 获取和使用某些网站的iconfont图标字体
  6. Mac/IOS Xcode Instruments资源统计及自动化相关
  7. Java SE (5)之 线程使用
  8. nginx服务器能ping通,访问不了的解决办法
  9. 怎么写出一个Activity
  10. 人民邮电出版社图灵公司征求《Windows Communication Foundation Unleashed》译者
  11. TB6612FNG电机驱动替代方案
  12. java 获取当天的0点和24点
  13. 【洛谷】P1427 小鱼的数字游戏
  14. 生鲜配送系统源码功能介绍
  15. js-xlsx插件导出的excel头部有一行序号解决办法
  16. 中国科学院深圳先进技术研究院合成所赵国屏研究员课题组2022年招聘启事
  17. 邮件黑名单系列文章十 : IP被UCEProtect列入黑名单
  18. jit java同步消除_聊聊JIT是如何影响JVM性能的
  19. python 静态成员变量
  20. 什么是Hadoop - HDFS - MapReduce - YARN - HA

热门文章

  1. 青龙面板之KS普通版、极速版(3/19更新)
  2. 深圳太极软件笔试题回顾(2013年12月11日)
  3. 重返线下渠道热潮掀起,单纯的线上线下搬运并无意义
  4. 《热血传奇》续作MIR4介绍,它成了地地道道的区块链游戏
  5. win10如何安装Rational rose(详解)
  6. 数据科学与大数据分析之项目6-CNN模型图像分类
  7. Delphi 如何用TMS AdvStringGrid做财务会计记账凭证的多表头网格表格?
  8. Java 语言实现简易版扫码登录
  9. MSF后渗透模块Meterpreter
  10. 南阳oj 题目290 动物统计加强版 字典树