IM即时通讯开发可靠的亿级IM消息投递机制

本文详细介绍了亿级分布式IM消息系统的消息收发机制,确保消息的不丢、不重、不乱序。通过自研RMTP协议保证上行的可靠性,结合客户端主动拉取、服务端主动发送(直发和通知拉取)确保下行消息的准确投递。通过用户ID区分和时间戳排序,保证消息有序,同时利用客户端和服务端的协同策略,实现高效的消息同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

即时通讯(IM)系统最基础、最重要的是消息的及时性与准确性,及时体现在延迟,准确则具体表现为不丢、不重、不乱序。

综合考虑业务场景、系统复杂度、网络流量、终端能耗等,我们的亿级分布式IM消息系统精心设计了消息收发机制,并不断打磨优化,形成了现在的消息可靠投递机制。

整体思路就是:

    1)客户端、服务端共同配合,互相补充;

    2)采用多重机制,从不同层面保障;

    3)拆分上下行,分别处理。

一个完整的IM消息交互逻辑,通常会为两段:

    1)消息上行段:即由消息发送者通过IM实时通道发送给服务端;

    2)消息下行段:由服务端按照一定的策略送达给最终的消息接收人。

消息上行段主要就是依赖IM的实时通道将消息传递给服务端。

这个阶段的消息可靠投递,需要从协议层进行保证,协议层需要提供可靠、有序的双向字节流传输,我们是通过自研的通信协议 RMTP(即 RongCloud Message Transfer Protocol)实现的。

客户端与服务端之间使用长连接,基于 RMTP 协议传输数据。

经过总结,消息下行段主要有三种行为。

1)客户端主动拉取消息,主动拉取有两个触发方式:

    ①

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值