浅谈IM系统之消息必达

本文通过一个生动的故事引入,探讨了IM系统中确保消息必达的重要性。作者介绍了用离线消息实现消息必达的流程及其在大规模群聊中的问题,提出了以会话列表为基础的新策略,减少了客户端负担。同时,文章还讨论了多终端条件下的完整消息履历获取和离线消息在某些场景下的必要性。
摘要由CSDN通过智能技术生成

1 前言

暗恋女神良久,终于鼓起勇气决定向女神写一封情书。但如何表达才能感动女神?自感才疏学浅,于是通读四书五经、熟背唐诗宋词、遍览四大名著,已然腹有诗书气自华。一周末冥思苦想整日才写就一首七言律诗,虽无惊天地泣鬼神之势,但诚挚的爱念在字里行间里流淌,亦歌亦诗,相信会感动到女神,手机欣然发出。
发出一秒后,手心冒汗,感觉脸颊发烫,心脏像受惊吓的野兔一样快速跳动,就像第一次看见女神那时的感觉。闭着眼睛,想象女神看到消息时的情形,她是否也期盼我的表白?看到消息时是否心跳加速、小脸绯红?
一分钟后,紧盯手机屏幕,等待、期盼女神回复。
时间一分一秒地逝去,等一分钟像等一年一样漫长。
一小时后,仍然杳无音讯,难道她没看到消息么?或许在忙什么而没留意手机吧!
一天过去了,坐立不安,等待是一种痛苦的煎熬,期待和煎熬在心中交织翻滚,有几个瞬间甚至希望女神赶快拒绝自己,好让自己解脱!茶饭无味,失眠多天,整日魂不守舍。
一个月过去了,死心。
半年后,女神出嫁,婚礼那天前去祝福。席间亦随众觥筹交错,略有醉意,向女神敬酒:祝福你,但愿以后能遇见像你这样的女人。女神先是愣住、收起笑容,低下头,目光无神地看着大红地毯,长叹一声,言:我等你表白,等了一年!空气凝滞了几秒,女神强作欢颜:从今往后,各自安好吧,干杯!我转身踱回到座位,拿起手机,打开那个App,看着曾经发出的情书,一切仿佛还在昨日,但故事脚本已被别人书写,欲哭无泪,叹老天为何如此捉弄我?为何我发的消息女神没收到啊!
失魂落魄地回到家里,从冰箱里拿出几瓶罗斯福10号来麻醉自己,在酒精强烈的作用下,迷迷入睡。
第二天醒来,我明白了一个道理:对IM系统而言,消息必达永远摆在第一位!-----分割线-----以上是正文,以下开始胡说八道。

2 用离线消息实现消息必达

我们在重构IMS时,需解决上一代设计的痛点之一就是确保消息必达。

2.1 离线消息实现消息必达的流程

自然而然地会想到这么做:

由服务端为每个人保存一个“离线消息列表”,当用户在线时,由IMS主动确保消息下发且收到客户端的应答确认时,才认为消息送达客户端,相应地把消息从“离线消息列表”移除;

如果客户端没有发回应答确认,IMS会再发送。

以此来确保消息一定送到客户端,看起来是很符合逻辑。当时调查过市面上多款IM,行为基本如此。

2.1 海啸般的离线消息

2.1.1 和平时期

重构后的IM上线,内部测试及在公网运行,离线消息的工作一直很正常。

2.1.2

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值