之前好多小伙伴反馈给小编说,好遗憾没去在深圳举办的2017全球架构师峰会,希望能多听点技术大牛们的讲座…
这不,小编这次特意邀请了腾讯高级工程师甘恒通Henry和InfoQ美女主持人给我们360度无死角还原峰会现场!
点击文末链接还能免费下载这次峰会所有大牛讲师的ppt资料哦!!
主持人:欢迎各位随我们穿越回2017年架构师峰会深圳现场!
主持人:
首先让我们来感受一下现场的气氛!
主持人:
好啦,事不宜迟,有请今天的嘉宾,腾讯移动推送(信鸽)的高级工程师甘恒通Henry来到我们现场~!Henry今天为我们带来的是《百亿级推送——腾讯信鸽的研发实战经验分享》。有请Henry——
大牛讲师:甘恒通Henry
2011年加入腾讯TEG数据平台部,主要负责大数据平台、推送平台后台的研发和优化工作,对构造高可用、高性能的分布式大数据处理和推送系统有丰富的实战经验,近期工作内容是构建信鸽精准推送系统,包括智能分群、实时推送、实时推送效果跟踪,解决公司内外部对推送质和量需求。
Henry:
谢谢主持人~(笑)
主持人:
非常感谢Henry今天给我们带来的精彩演讲,演讲内容中尤其是单机性能的多层次多角度优化,给我留下了深刻印象。从硬件、操作系统、协议栈、架构4个角度优化单机性能,最终实现单机性能优化的极致。
Henry:
只有不断深入挖掘单机性能,才能实现信鸽现在百亿推送的能力,这是用户对我们的期许,也是我们回馈用户的方式。腾讯移动推送(信鸽)一直都致力于为用户提高更优质更稳定的推送服务。优质的服务,是我们在这个市场上的立足点。
主持人:
那相对其他第三方推送服务,信鸽有什么优势呢?
Henry:
主要是以下4个方面:
1) 信鸽是免费的推送工具,服务的理念是以用户为中心提供专业的推送服务。从应用接入、测试、上线都提供了实时专业的技术支持服务。
SDK一键集成,极大地提升了接入的效率,测试环境和现网环境隔离,提升测试阶段定位问题的效率。秒级更新的多维推送效果统计数据让应用开发者实时掌握推送运营效果。
2) 共享终端service,联合保活:腾讯公司内部互娱的很多游戏是我们的服务的客户,包括王者荣耀等过亿级的应用,腾讯以外也有上万的APP用户。安卓上进行消息推送,终端有很多限制,APP不一定活跃,所以消息抵达率通常比较低,采用共享service,只要有一个APP活跃,信鸽的连接就是活的,其他APP也能借用这个连接把消息及时送达。
3) 依托腾讯内部完善的基础设施,包括丰富的用户画像、实时行为数据,和成熟的运营体系,对构建稳定、高性能的分布式精准推送服务更有保障。
服务器国内、国外多地部署,终端设备实现了就近接入,保证了可靠稳定的长连接,信鸽后台系统实现了虚拟化,开发、测试、运维一体化保证了敏捷的开发流程,扩缩容也变得简单。
4) 注重用户隐私,保证数据安全:
信鸽以可配置的方式给应用提供了数据采集的能力,数据安全做到传输加密,防止推送消息被篡改和伪造,多副本存储,保证万无一失,应用上用户创造出来的数据跟腾讯自有的业务数据在物理分隔,不会相互污染。最后信鸽对接了公司内的“宙斯”、“门神”等防御系统,以平台的实力抵御恶意的请求。
主持人:
厉害了,我的哥!坚持免费的道路,优化推送效果,对外输出画像能力,保证数据安全,对于开发者来说真的很有吸引力!
那现在信鸽有哪些用户在使用呢?
Henry:
信鸽平台活跃App数过万,日推送消息量60亿,有很多优质客户,比如腾讯游戏基本都是我们的客户,包括王者荣耀这样的明星App。除此之外,还有京东、KEEP、起点、返利、微店等众多知名App客户。
主持人:
哇!王者荣耀都在用!像王者荣耀这么大型的App,推送量应该很大,给后台是否有很大压力?这中间我们做了什么吗?
Henry:
是的,王者的活跃量很大,推送也很活跃,确实给我们带来了不小的挑战。但我们也做了很多相应的优化——
对于后台的挑战,主要有这三个关键词:海量、精准和实时。
海量是指,信鸽终端并发长连接是几千万的量级,日推送量也有几十亿的量级,这里面主要是因为信鸽对接了公司内部互娱的游戏,像王者荣耀、天天酷跑这些TOP的应用,每天的活跃用户也是几千万量级。
对于其它的一些应用来说,也有各自的推送的诉求。比如说对于一些新闻类的应用,时效性要求非常高,需要每秒千万级的推送速度,另外一些应用则需要在达到运营目标的前提下,希望尽量减少对用户的骚扰,即精准推送。
对海量的并发长连接,一方面,需要提高设备资源的利用率,可以通过一些docker虚拟化的方式来解决;另一方面,我们要深入挖掘单机的性能,从硬件、操作系统、协议栈、架构四个方面进行深入分析和优化。硬件主要是善于利用Intel AVX,SSE4.2的指令集,例如它里面包含CRC32等方法,比一般的实现方法有数倍的性能提升。
操作系统方面需要根据实际的物理内存大小调整相关的文件句柄数和内存分配数。协议栈方面考虑使用用户态的协议栈替换系统自带协议栈,消除频繁的系统调用和内存拷贝带来的额外处理开销。最后是选择一个好的server框架,使用无锁的共享内存进行进程间消息通讯,业务处理进程采用基于epoll的协程模型,既能降低开发业务逻辑的难度,又能避免采用多线程模型带来的系统上下文切换带来的性能损失。
主持人:
嗯嗯,你帅你说的都对!❤ ❤ ❤
那精准又改如何实现呢?
Henry:
对海量设备进行实时推送主要的解决方案是针对推送的场景优化存储结构,同时将单个推送的RPC节点间调用转换成分布式的批量位图运算,优化Android终端长连接,接入集群分多地部署,做最近接入,和APNs的交互使用HTTP/2协议,对无效的token自动做数据清理。
对像王者荣耀这些大型的应用,我们建立了VIP通道,系统上做独立部署,对硬件资源进行隔离,平时保持良好的沟通,对节假日推送量的突涨提前做好扩容准备,做贴身服务,满足一些个性化推送的需求。
主持人:
看来真的是服务到家啊!
刚刚Henry也提到了实时性,推送的时效性其实是大家都关注的问题,实时性能我们要如何保证?
Henry:
实时精准推送系统的关键技术有优化存储——将文本数字化,位图压缩存储和分布式并行检索和运算。
实时精准推送系统分两种不同的场景。
第一个场景是实时推送,第二个场景是要做实时的多维分析,这两套系统实现的核心是对我们的数据构建倒排索引,倒排索引在业界用得比较多的是在搜索引擎里面文档的全文检索,对于信鸽,倒排索引是根据我们实现的应用场景进行构建。
大家可能有点难理解,我举个例子吧,比如说,对于一些画像的信息,男性用户,可以做一个倒排索引,保存成bitmap的数据格式;信鸽里面一个应用具体的设备标识,做一个文本转换数字的操作后,经过倒排索引之后,保存成bitmap的数据格式。对于实时推送部分,要求数据秒级更新,我们用了storm进行倒排索引,数据经过转换之后,存储占用很小,这样我们把它放在内存里面,可以进行实时的更新和检索。
主持人:
我好像有点懂了,那实时精准推送的另一个场景是什么?
Henry:
另外一个场景是,我们需要对历史数据、原始数据进行实时的多维分析,比如需要分析最近几天之内大盘所有用户的点击情况。这里面可能涉及的数据量就会非常大,需要采用离线的方式进行索引的构建。
只有不断深入挖掘单机性能,才能实现信鸽现在百亿推送的能力,这是用户对我们的期许,也是我们回馈用户的方式。腾讯移动推送(信鸽)一直都致力于为用户提高更优质更稳定的推送服务。优质的服务,是我们在这个市场上的立足点。
多维分析的索引和实时推送的索引是不一样的,它主要实现的方式是对所有的数据进行规范化的处理,每个字段的格式基本上保持一致。对于每一条记录会根据预置的规则进行数据的抽取,需要构建倒排索引的属性字段会进行规格化和映射的转换,数据记录根据设备标识进行分区,每个分区内的记录进行独立的编号,倒排索引即为属性字段对应的记录的编号,离线处理的最后是落地成统一的索引文件,保存在HDFS中。
当一个分析的需求过来的时候,会有一些pull节点,把这些索引的数据拉到本地并加载到内存,经过查询规则解析后执行相关索引文件的检索、分组和聚合函数的运算,最后由一些汇总节点将结果进行合并后返回给查询者。
主持人:
非常感谢Henry给我们的精彩分享,满满的技术干活,我想我要回去消化一阵了!最后一个小问题,信鸽以后未来发展方向是什么?有什么规划么?
Henry:
我们的现在平台上主要的产品除了腾讯移动推送(信鸽)之外,还有腾讯移动分析MTA,未来我们的目标是建设整个APP开发者平台,整体发展方向大致会分为三块:
一块是我们基础建设,包括基础集群的质量、数据的准确性、系统的稳定性和安全性、推送速度时效性等。
一部分是为开发者提供更多的服务,例如为开发者提供Crash分析、推送的通道、系统的监控、热更新、安全加固这样一系列的工具类产品。
第三部分是为产品运营者服务,提供精细化运营的能力,帮运营者做用户画像,做精准推送,提供LBS的分析,提供按地址位置的特色推送触达,帮他实现可视化的埋点,帮他可以提升运营效率。
以上是我们的大致方向,为开发者提供一揽子的工具化平台服务。
主持人:
哇,工具平台听起来好棒棒,感觉集成一个就能解决所有问题了,好期待!原来鹅厂的小哥哥不仅长得帅,技术还过硬!谢谢Henry接受我们的采访~比心!
小编:
最后再提醒大家一句,点击此链接:2017全取架构师峰会全部PPT,别错过了~
小编:
好啦,以上就是今天的全部内容~各位看官还满意吗?欢迎将您的看法、建议、意见在评论区留言~小编都会记在心上哒
联系我们
您可以访问我们的官网:
腾讯大数据:data.qq.com/?ADTAG=EXTE…
腾讯移动分析MTA:mta.qq.com/?ADTAG=EXTE…
腾讯移动推送(信鸽):xg.qq.com/?ADTAG=EXTE…
点击右侧在线客服,直接与我们联系;
或者发送邮件至:
商务合作邮箱:data@tencent.com
技术支持邮箱:dtsupport@tencent.com