im 应用多点登录和消息漫游架构

news2025/7/20 21:26:55

本文主要节选和总结自沈剑大佬的 微信多点登录与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可以定,架构都可以实现。常见策略是:分页拉取,按需拉取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/347039.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

超详细讲解线性表和顺序表!!

超详细讲解线性表和顺序表!!线性表顺序表顺序表的概念及结构静态顺序表动态顺序表顺序表接口实现1、创建2、初始化3、扩容4、尾插5、打印6、销毁7、尾删8、头插9、头删10、插入任意位置11、删除任意位置12、查找13、修改线性表 线性表(linea…

分析C语言位域的访问开销

背景 C语言的位域用于描述结构体的指定字段占多少bit,使得多个字段可以存到一个字节里,也可以让一个字段占多个字节。它能减小结构体的内存占用,同时还能精确限定结构体字段的取值范围。 问题的提出 项目上有个硬件模块,它输入…

Linux系统下基于Docker安装Yapi,并且迁移Yapi数据

本文主要讲四个部分: 1.什么是Yapi 2.Centos7 下基于docker安装Yapi 3.Yapi数据迁移 4.利用Nginx反向代理 什么是Yapi YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、…

网络安全-内网DNS劫持-ettercap

网络安全-内网DNS劫持-ettercap 前言 一,我也是初学者记录的笔记 二,可能有错误的地方,请谨慎 三,欢迎各路大神指教 四,任何文章仅作为学习使用 五,学习网络安全知识请勿适用于违法行为 学习网络安全知识请…

【C++、数据结构】哈希 — 闭散列与哈希桶的模拟实现

文章目录📖 前言1. STL中哈希表的两个应用⚡1.1 🌟unordered_set1.2 🌟unordered_map2. 常见查找的性能对比💥3. 哈希表模拟实现🏁3.1 哈希的概念:3.2 哈希函数:3.3 哈希冲突:3.4 闭…

RPC概念与理解(一)

目录 1.写在前面 2. 电商系统的演变 2.1 单一应用框架 2.2 垂直应用框架 2.3 分布式应用架构(RPC) 2.4 流动计算架构(SOA) 2.5 架构演变详解 3.远程调用方式 RPC Http 总结:对比RPC和http的区别 4.什么是PRC 5.RPC是什么 6.RPC剖析 6.1.RPC的工作原理…

Java并发编程解析之基于JDK源码解析Java领域中ReentrantLock锁的设计思想与实现原理

一、开头 在并发编程领域,有两大核心问题:一个是互斥,即同一时刻只允许一个线程访问共享资源;另一个是同步,即线程之间如何通信、协作。 主要原因是,对于多线程实现实现并发,一直以来&#xff…

【蓝桥杯集训3】二分专题(3 / 5)

目录 二分模板 1460. 我在哪? - 二分答案 哈希表 1221. 四平方和 - 哈希表 / 二分 1、哈希表 2、二分 自定义排序 1227. 分巧克力 - 113. 特殊排序 - 二分模板 l r >> 1 —— 先 r mid 后 l mid1 —— 寻找左边界 —— 找大于某个数的最小值lr…

SRV6跨域优势

背景 运营商网络作为一张覆盖全国的网络,其主体分为骨干,省干,城域网层级,主流的管理模式为分层级管理。随着运营商网络服务的终端规模不断增长,不同地理位置之间网络连接的需求变得非常的普遍,但不同网络…

SpringMVC使用JSTL

简介 JSTL 标签是一个开放源代码的 JSP 标签库,是由 apache 的 jakarta 小组来维护的;JSTL 只能运行在支持 JSP1.2 和Servlet2.3 规范的容器上,在 jsp 页面中经常用到,能帮助我们实现一些特殊的功能,例如:…

windows-Mysql的主从数据库同步设置

复制原有的mysql修改my.ini配置文件 修改端口号修改从数据的地址和从数据库的数据存放地址安装从数据库进入从数据库的bin目录,打开命令窗口输入命令:mysqld.exe install mysql-back --defaults-file "C:\ProgramData\MySQL\MySQL Server 5.7-back\…

1、创建第一个Android项目

1.1、创建Android工程项目:双击打开Android Studio。在菜单栏File中new-->new project3、在界面中选择Empty Activity,然后选择next4、在下面界面中修改工程名称,工程保存路径选择java语言,然后点击finishAndroid studio自动为…

实现了统一消息中心的微服务基础框架 JVS,快点赞收藏

一、开源项目简介基于JVS(基于spring cloud封装)的基础开源框架,实现了基于多对多租户能力的管理系统。二、基础框架实现功能支持数据管理支持分布式定时任务支持分布式日志采集支持系统监控支持动态配置中心支持模板消息支持链路跟踪支持邮件…

jenkins部署指定任意版本和配置详细教程 jenkins 2.361版本示例

Jenkins构建CI/CD什么是CI/CD:持续集成/持续发布---开发(git) -->git主库-->jenkins(gitjdktomcatmaven打包测试)-->发布到tomcat服务器。持续集成(Continuous Integration, CI): 代码合并,构建,部署,测试都在…

【Airplay_BCT】Bonjour 和本地链接、域名和 DNS

Bonjour 零配置网络架构支持在局域网或广域网上发布和发现基于 TCP/IP 的服务。本文档概括介绍了 Bonjour 架构,并简要介绍了可用的 Bonjour API。 Bonjour 是 Apple 对一套零配置网络协议的实现。 Bonjour 旨在让用户更轻松地进行网络配置。 例如,Bon…

ChatGPT一路狂飙,NVMe SSD能否应对性能挑战?

近日,ChatGPT持续火爆,用户在短短两个月内迅速破亿,大量用户涌入导致ChatGPT访问和数据规模指数级增加。与数月前发布的版本相比,新的ChatGPT“智能”了许多,不仅可以像人类一样聊天交流,甚至能够完成一定程…

70. with open( ) as 以自动关闭文件的方式打开文件

70. with open( ) as 以自动关闭文件的方式打开文件 文章目录70. with open( ) as 以自动关闭文件的方式打开文件1. 知识回顾1. open函数语法参考2. 准备工作3. mode模式知识回顾2. with open 语句的作用3. with open 语句语法4. with open 语句实操5. 总结1. 代码总结2. 重点知…

Pandas学习2

Pandas学习2 None 两种缺失数据:None、np.nan(NaN) None是python自带的,不能参与计算。类型是object np.nan 浮点类型,说明能参与计算,但是结果是nan pandas中的None和np.nan pandas中的None和np.nan都视为np.nan 如果列…

ArkUI新能力,助力应用开发更便捷

ArkUI是一套构建分布式应用的声明式UI开发框架。它具备简洁自然的UI信息语法、丰富的UI组件、多维的状态管理,以及实时界面预览等相关能力,帮助您提升应用开发效率,并能在多种设备上实现生动而流畅的用户体验。随着HarmonyOS 3.1版本的发布&a…

签收后再补录物流信息单号要如何分析

随着网络时代电商平台掘起,购物平台也是越来越多,呈现出快递也是越来越多,电商平台和快递两者是密不可分,有下单就需要快递物流,所以快递公司也是很重要一个环节,最近有朋友向咨询如何分析出比如单号过已签…