分层架构 IM 系统之未读数逻辑设计与实现

在 IM 系统中,“未读数” 是一个非常核心的概念。

首先,从产品体验上,用户登录之后,往往是由消息 “未读数” 引导用户后续的操作;其次,“未读数” 实现逻辑直接影响了上层业务的核心设计;轻量级的未读数模型,会大大降低服务端负载,提升性能,减少损耗。

IM 的未读数模型包括 “离线存储模型” 和 “在线存储模型”,我们今天结合场景深入分析。

一、离线存储模型

所谓未读数的离线存储模型,是指消息未读数的统计和计算需要借助于离线消息库,见下图场景。

  • 当用户 uid=101 发一条消息给离线用户 uid=102 时,处理的逻辑是向 “离线库” 写入一条记录,向 “云消息库” 写入两条记录(在前面的文章 《分层架构 IM 系统之 Das 领域模型设计》 有深入分析);

  • 当用户 uid=101 发一条消息给在线用户 uid=102 时,处理的逻辑是只向 “云消息库” 写入两条记录;

  • 当用户 uid=102 登录后,会首先从 “离线库” 中拉取所有的离线消息记录到客户端本地,这些离线消息记录的条数是客户端未读数的一部分,还有一部分是已经在客户端本地但未被用户阅读的消息(这是客户端逻辑,不在本文讨论范围)。

可以这样简单来理解未读数的离线存储模型:

  1. 当用户处于在线状态时,客户端收到消息后,未读数的统计完全由客户端来计算;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值