背景
APP推送是触达用户的一个非常重要的手段,对于提高产品活跃度、提高功能使用体验、提升用户粘性、提升用户留存率都会起到重要作用。伴鱼旗下多款APP,支持丰富的用户交互体验,对推送的依赖上表现的尤为突出。随着公司业务的快速发展,伴鱼旗下的app也在与日俱增,对推送场景的需求也开始多样化,推送量的需求更是飞速增长,这些都对伴鱼推送平台提出了更高的要求。本文就伴鱼推送平台在实践中遇到问题的思考以及相应的技术方案进行详细说明,以期给读者带来一些思考以及解决类似问题的思路。
推送平台通常会遇到的问题,在伴鱼这里也都同样遇到,最具有代表的问题:
- 高吞吐。推送巨大的流量如何支撑,尤其在运营集中做活动时候表现的尤为突出,动辄是千万量级 亦或是亿级别的量级,怎么能够很好的支撑?
- 低延迟。推送任务要能以最快的速度让用户收到。运营集中做活动的时间很短,要在这有限的时间内,尽可能快的触达用户。
同时伴鱼推送平台也遇到了我们业务特有的推送问题:
- 多客户端推送。伴鱼旗下的诸多app,在业务上有着强的关联关系,业务上的同一功能可能要给多个app下发推送,比如:家长都很关心学生的学习情况,学生若在学生端获得一个奖励,需要推送学生端,也需要及时通知家长端
- 多种推送场景。伴鱼诸多业务中比较突出的有三种场景的推送,一种是业务实时推送,在线课堂的交互实时推送就是比较典型的示例,这类推送用户多为在线用户,推送时效性要求很高,否则会影响用户的上课体验;一种是类似站内信的系统通知,这类推送用户多为离线用户,推送消息可靠性很高;一种是营销推送,这类推送用户多为离线用户,可靠性要求没有前两种高。第一种场景的流量曲线跟业务高峰期的曲线相同,每天量相对稳定,后两种场景流量是典型的脉冲式流量,有推送时流量会瞬间陡增。
- 推送相互隔离。推送平台是面向伴鱼所有业务线的,不能因为某个业务线的推送量过大,影响到别的业务的使用,如何能够按业务隔离,按推送类型隔离?
带着这些问题我们技术中台协力打造了一个高吞吐、低延迟、多业务隔离的的伴鱼推送平台