im即时通讯开发:离线推送到达率优化方法
Posted wecloud1314
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了im即时通讯开发:离线推送到达率优化方法相关的知识,希望对你有一定的参考价值。
闲鱼的IM消息系统作为买家与卖家的沟通工具,增进理解、促进信任,对闲鱼的商品成交有重要的价值,是提升用户体验最关键的环节。
然而,随着业务体量的快速增长,当前这套消息系统正面临着诸多急待解决的问题。
以下几个问题典型最为典型:
1)在线消息的体验提升;
2)离线推送的到达率;
3)消息玩法与消息底层系统的耦合过强。
经过评估,我们认为现阶段离线推送的到达率问题最为关键,对用户体验影响较大。
通信链路类型的划分
从数据通信链接的技术角度,我们根据闲鱼客户端是否在线,将整体消息链路大致分为强感知链路和弱感知链路。
强感知链路由以下子系统或模块:
1)发送方客户端;
2)idleapi-message(闲鱼的消息网关);
3)heracles(闲鱼的消息底层服务);
4)accs(阿里自研的长连接通道);
5)接收方客户端组成。
整条链路的核心指标在于端到端延迟和消息到达率。
强感知链路中的双方都是在线的,消息到达客户端就可以保证接收方感知到。强感知链路的主要痛点在消息的端到端延迟。
弱感知链路与强感知链路的主要不同在于:弱感知链路的接收方是离线的,需要依赖离线推送这样的方式送达。
因此弱感知链路的用户感知度不强,其核心指标在于消息的到达率,而非延迟。
所以当前阶段,优化弱感知链路的重点也就是提升离线消息的到达率。换句话说,提升离线消息到达率问题,也就是优化弱感知链路本身。
各主要组件和子系统分工如下:
1)HSF是一个远程服务框架,是dubbo的内部版本;
2)tair是阿里自研的分布式缓存框架,支持 memcached、Redis、LevelDB 等不同存储引擎;
3)agoo是阿里的离线推送中台,负责整合不同厂商的离线推送通道,向集团用户提供一个统一的离线推送服务;
4)accs是阿里自研的长连接通道,为客户端、服务端的实时双向交互提供便利;
5)lindorm是阿里自研的NoSQL产品,与HBase有异曲同工之妙;
6)域环是闲鱼消息优化性能的核心结构,用来存储用户最新的若干条消息。
强感知链路和弱感知链路在通道选择上是不同的:
1)强感知链路使用accs这个在线通道;
2)弱感知链路使用agoo这个离线通道。
弱感知链路到底怎么定义
通俗了说,弱感知链路指的就是离线消息推送系统。
相比较于在线消息和端内推送(也就是上面说的强感知链路),离线推送难以确保被用户感知到。
典型的情况包括:
1)未发送到用户设备:即推送未送达用户设备,这种情况可以从通道的返回分析;
2)发送到用户设备但没有展示到系统通知栏:闲鱼曾遇到通道返回成功,但是用户未看到推送的案例;
3)展示到通知栏,并被系统折叠:不同安卓厂商对推送的折叠策略不同,被折叠后,需用户主动展开才能看到内容,触达效果明显变差;
4)展示到通知栏,并被用户忽略:离线推送的点击率相比于在线推送更低。
针对“1)未发送到用户设备”,原因有:
1)离线通道的token失效;
2)参数错误;
3)用户关闭应用通知;
4)用户已卸载等。
针对“3)展示到通知栏,并被系统折叠”,原因有:
1)通知的点击率;
2)应用在厂商处的权重;
3)推送的数量等。
针对“4)展示到通知栏,并被用户忽略”,原因有:
1)用户不愿意查看推送;
2)用户看到了推送,但是对内容不感兴趣;
3)用户在忙别的事,无暇处理。
总之:以上这些离线消息推送场景,对于用户来说感知度不高,我们也便称之为弱感知链路。即时通讯开发
弱感知链路的逻辑构成
我们的弱感知链路分为3部分,即:
1)系统;
2)通道;
3)用户。
共包含了Hermes、agoo、厂商、设备、用户、承接页这几个环节。
从推送的产生到用户最终进入APP,共分为如下几个步骤:
步骤1:Hermes是闲鱼的用户触达系统,负责人群管理、内容管理、时机把控,是整个弱感知链路的起点。;
步骤2:agoo是阿里内部承接离线推送的中台,是闲鱼离线推送能力的基础;
步骤3:agoo实现离线推送依靠的是厂商的推送通道(如:苹果的apns通道、Google的fcm通道、及国内各厂商的自建通道。;
步骤4:通过厂商的通道,推送最终出现在用户的设备上,这是用户能感知到推送的前提条件;
步骤5:如果用户刚巧看到这条推送,推送的内容也很有趣,在用户的主动点击下会唤起APP,打开承接页,进而给用户展示个性化的商品。
经过以上5个步骤,至此弱感知链路就完成了使命。
弱感知链路面临的具体问题
弱感知链路的核心问题在于:
1)推送的消息是否投递给了用户;
2)已投递到的消息用户是否有感知。
这对应推送的两个阶段:
1)推送消息是否已到达设备;
2)用户是否查看推送并点击。
其中:到达设备这个阶段是最基础的,也是本次优化的核心。
我们可以将每一步的消息处理量依次平铺,展开为一张漏斗图,从而直观的查看链路的瓶颈。
通过分析以上漏斗图,弱感知链路的优化重点在三个方面:
1)agoo受理率:是指我们发送推送请到的数量到可以通过agoo(阿里承接离线推送的中台)转发到厂商通道的数量之间的漏斗;
2)厂商受理率:是指agoo中台受理的量到厂商返回成功的量之间的漏斗;
3)Push点击率:也就通过以上通道最终已送到到用户终端的消息,是否最终转化为用户的主动“点击”。
有了优化方向,我们来看看优化手段吧。
以上是关于im即时通讯开发:离线推送到达率优化方法的主要内容,如果未能解决你的问题,请参考以下文章