im 应用多点登录和消息漫游架构
2023-03-14 22:59:17 时间
本文主要节选和总结自沈剑大佬的 微信多点登录与QQ消息漫游架构随想和文章的评论,略有删改
1、多点登录和消息漫游架构
多点登录指的是同个账号可以在多类终端(安卓、pc)同时登录,但是同类终端只能在唯一的一台设备上登录。
消息漫游指的是服务端保存聊天消息,使得用户在任何终端设备登录账号,都能拉取到所有历史聊天消息。
1.1 多点登录下的消息发送
用来保存用户在线状态的缓存从用户id为key,改成用户id拼接上终端类型和登录点。
用户 A 给好友 B 发送消息时需要给自己的其他终端登录设备和好友 B 的所有终端登录设备发送消息。
1.2 消息漫游实现
(1)所有消息需要在云端存储一份
(2)每个端本地存储last_msg_id,在登录时可以到云端同步历史消息(web端不允许拉取历史数据)
(3)云端存储所有消息成本较高,一般会对历史消息时间(或者条数)进行限制,比如3个月
2、问题
问:如果在某一端,比如 pc 删除了好友,怎么保证其它终端的好友列表一致性
如果其他终端也在线,需要服务端实时推送更新事件到其他端,修改本地数据
如果其他终端暂时不在线,那么需要其他终端在下次登录时重新拉取用户列表
问:数据库存放何种类型的数据合适 , 消息 这种临时性数据 持久化到关系型数据库合适吗
大文件二进制类放db不一定适合。离线消息数据,放数据库合适
问:如果一台服务器比如gate宕机或者重启,连接上来的用户的缓存信息应该怎么处理?简单的说就是高可用如何实现?
(1)消息可达性不会受影响,要么落地,要么没有ack。
(2)状态一致性不会有问题:投递失败,可以将状态置为离线,暂时离线存储,恢复后重新投递消息。
(3)客户端有重连机制,一台挂了,可以连另一台。
问:关于拉取离线消息,由于本地存储了last msg id如果本地应用清除数据,重装,换手机登录,又或是h5页面登录没有本地缓存的情况,如何拉取消息,3个月的消息全拉?
策略pm可以定,架构都可以实现。常见策略是:分页拉取,按需拉取。
相关文章
- 微软公布运行Android应用/游戏的Windows 11设备要求
- Windows 11承诺的支持安卓App终于更新了 大神教你如何在国区使用
- 重新设计的Windows记事本和Media Player上架
- 移植案例与原理 - XTS子系统之应用兼容性测试套件之二
- 移植案例与原理 - XTS子系统之应用兼容性测试套件之一
- Windows 11今日迎来数个新功能 包括Android应用支持和任务栏改进
- Windows 11设置应用将获重大升级
- 微软 Windows 11 全新现代任务管理器更多曝光功能体验:支持 App 健康、电池健康、新启动项
- 1 万 Star!基于 Android 平台的开源 Linux 终端模拟器
- 微软筹备Windows 11系统新版本:Win10开始菜单文件夹功能终于回归
- 斗宿-HarmonyOS中APP、组件、组件库的辨析与应用
- Windows 10的三个神仙功能,放着不用就可惜了,你都用过吗?
- 微软突然暂停Windows 11更新:直言为系统准备更多重磅新功能
- 如何在 Windows 11 中快速安装 Android 原生应用
- 准备大更新!Windows 11 22543预览版发布:更顺手好用了
- 可运行安卓应用:微软正式确认Windows 11更新
- 微软 Windows 10 / 11 月活设备达 14 亿台,90% 财富 500 强企业使用 Teams
- Windows 11将在下月获得Android Apps支持、任务栏改进以及更多
- PC与Android合体 微软宣布Windows 11安卓子系统下月全面开放
- 微软 Edge 浏览器搞大动作:推出 Web 协议处理程序,PWA 网页也能成为系统默认应用