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即时通讯开发:离线推送到达率优化方法的主要内容,如果未能解决你的问题,请参考以下文章

阿里IM技术分享(六):闲鱼亿级IM消息系统的离线推送到达率优化

IM即时通讯开发优化提升连接成功率速度等

im即时通讯开发:群消息推送如何保证实时性

开发即时通讯难不难?有没有第三方im?sdk可以推荐

im即时通讯开发:离线消息历史消息的实践

im即时通讯开发:IM系统中离线消息历史消息实践