本文由转转平台业务负责人王计宽分享,原题“转转push系统的演进之路”,下文有修订和重新排版。
顾名思义,push就是就是借助厂商通道把消息发送给用户的一种方式,一般用于用户的召回和活动触达,和即时通讯IM在业务上稍有区别,但技术逻辑上是相通的,不在此处赘述。
本文将从0开始讲讲转转千万级用户量消息推送系统的架构演进和迭代过程,以及遇到的常见问题的解法,希望能带给你启发。
技术交流:
- 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》
- 开源IM框架源码:https://github.com/JackJiang2011/MobileIMSDK(备用地址点此)
(本文已同步发布于:http://www.52im.net/thread-4852-1-1.html)
以下是本文涉及到的一些技术术语的解释:
现有的架构支持后台推送、业务推送以及个性化推荐推送。
以下是相关推送业务的特点:
步骤:
问题:
解决方案:
遗留的问题:PM上传了一个浏览过手机类目用户的数据集合,数据量太大,上传超时。PS:用户量大概在1000w左右+,大约300M左右的文件。
提示:
问题描述:重大节日,推送全量用户、月活、周活数据,每次仅是文案不同,PM都需要跑大数据系统,效率太低,当天数据不可获得,平均推送需要1个多小时。
要求:
分析-数据量(以2000w月活为例):
分析-性能(以2000w月活为例):
难点分析:
解决方案:
最终选择redis的zset进行存储。
首先分析之前之所以慢的原因:
解决方案:
注意:iOS通道,我们用的pushy开源工具,特定情况下无法持续推送消息,需要定时检查,重新创建通道。
最后的效果:push推送的QPS达到3w+,推送能力提升的同时,也引发了以下问题。
问题描述:当push的推送能力上去了之后, 用户的瞬时访问问题随之而来
push落地效果:
解决办法:
问题描述:有一天晚上9点推送了一个运营类的push,发现居然点击率超级高,是文案优秀?还是流量高峰?
要求:存在多个推送文案,系统能够择优选择点击率最好的进行推送?
解决方式:加入AB测的能力,先进行少量用户推送,根据AB的效果,择优推送.
新的问题:之前安卓的通道我们仅有小米通道+个推(个推达到率一般,做托底), 如果我们向华为手机推送消息,也是通过小米通道是很难到达的。
要求:
解决方式:
效果:当年统计能够提高10%的达到率。
一般的监控维度包含:
现状:
提高速度:预加载+缓存+多线程+合理的数据结构+批量处理+合理布局+特殊埋点。
折中方案:异步上传、限流控制、降级处理、分层解耦、补偿通知。
[1] 极光推送系统大规模高并发架构的技术实践分享
[2] 魅族2500万长连接的实时消息推送架构的技术实践分享
[3] 专访魅族架构师:海量长连接的实时消息推送系统的心得体会
[4] 基于WebSocket实现Hybrid移动应用的消息推送实践(含代码示例)
[5] 一个基于长连接的安全可扩展的订阅/推送服务实现思路
[6] 实践分享:如何构建一套高可用的移动端消息推送系统?
[7] Go语言构建千万级在线的高并发消息推送系统实践(来自360公司)
[8] 腾讯信鸽技术分享:百亿级实时消息推送的实战经验
[9] 京东京麦商家开放平台的消息推送架构演进之路
[10] 技术干货:从零开始,教你设计一个百万级的消息推送系统
[11] 爱奇艺WebSocket实时推送网关技术实践
[12] 喜马拉雅亿级用户量的离线消息推送系统架构设计实践
[13] 消息推送技术干货:美团实时消息推送服务的技术演进之路
[14] 揭秘vivo百亿级厂商消息推送平台的高可用技术实践
[15] 得物从零构建亿级消息推送系统的送达稳定性监控体系技术实践
[16] B站千万级长连接实时消息系统的架构设计与实践
(本文已同步发布于:http://www.52im.net/thread-4852-1-1.html)
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。