千家信息网

IM系统的SESSION结构是什么

发表于:2024-11-16 作者:千家信息网编辑
千家信息网最后更新 2024年11月16日,这期内容当中小编将会给大家带来有关IM系统的SESSION结构是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、IM系统基本结构一个IM系统的基本结构如下图所
千家信息网最后更新 2024年11月16日IM系统的SESSION结构是什么

这期内容当中小编将会给大家带来有关IM系统的SESSION结构是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

一、IM系统基本结构

一个IM系统的基本结构如下图所示

1、msg-gate模块是接入层,核心功能是连接整流。维护与客户端的海量TCP长连接,将外界海量TCP长连接整流为少量与后端msg-logic的TCP长连接。

2、msg-logic模块是逻辑层,核心功能是处理消息投递逻辑。

3、redis负责缓存业务客户端的连接状态,连到哪一个msg-gate,连接状态是否正常。用于向用户推送消息时,提供消息路由。

4、ipconfig向client端提供msg-gate所在IP地址。

二、session维护方式及原因

1、session维护模块

整个系统中维护session总共有两个模块,msg-gate和redis。

2、两个地方维护session原因

msg-gate是分布式部署,每个节点连接有不同的客户端(client)。msg-gate接收client消息或者logic请求向client发消息,都需要验证client端状态是否正常,从性能的角度出发,msg-gate需要在本地维护一份session。

由于msg-gate,msg-logic是分布式部署,有若干节点。当clientA向clientB发送消息时,msg-logic需要一个地方可以检索clientB所连接的msg-gate位置(IP),因此需要一个集中(也可以hash多台机器)的位置存储session路由关系。

三、session存储的具体结构

1、msg-gate模块session结构

先给出msg-gate的session结构

msg-gate的session通过channelid(socketid)检索。接收client消息很容易理解,对应的socket会触发事件;如果logic请求发送消息,也需要提供channelid(Redis集中session路由部分会介绍)。

session中uid(用户id)数据怎么得到呢?

看一下client到msg-gate的协议

从性能的角度出发,msg-gate模块只解析协议的消息头(前20个字节),msg-gate模块不能通过协议直接得到用户信息。但是,每个连接上msg-gate的client都需要合法授权才能收发消息,通过这个步骤,msg-gate能将uid与channelid建立关联。

2、Redis中session结构

redis中的session主要使用对象为msg-logic,处理业务逻辑的模块,session基本结构为结构),其中session内容包括msg-gate地址、channelid等(msg-gate、chanelid也通过授权过程获得)。

以uid为key这个结构,非常符合msg-logic处理业务逻辑。

3、两处session间的转换关系

msg-gate调用msg-logic的接口,一律将channelId转化为uid;msg-logic调用msg-gate的接口,将uid转化为channelid。由于神奇的hash算法,转化过程的时间复杂度为常数1。

至此,IM系统各个模块均能高效定位某个客户端位置及状态。

上述就是小编为大家分享的IM系统的SESSION结构是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

结构 消息 模块 系统 客户 状态 逻辑 业务 位置 内容 用户 角度 路由 处理 两个 分布式 功能 原因 地址 地方 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河北大学网络安全计划 青海数字化城管软件开发公司 网络安全教父是谁 139邮箱提示服务器连接失败 初中生能学网络安全工程师吗 网络安全绘画一年级简单漂亮 基于弹性的网络安全防护架构 动漫的服务器是什么样子的 麒麟软件开发工业软件 dell的服务器功率 网络安全知识普及和宣传文章 dell机架式服务器如何开机 传奇如何自己开服务器 软件开发维护面试 拉贾克斯服务器 常州企业软件开发中心 杨浦区网络技术服务推荐咨询 两列有部分重复数据库 三海致网络技术北京 亚马逊云服务器怎么搭建 河北大学网络安全计划 做外贸手机用什么软件开发 微信云开发数据库可以导出么 软件开发类报价 深圳软件开发企业十强 福州线上生鲜配送软件开发 北京最好的服务器托管虚拟主机 天天有网络技术有限公司招聘 电话交换网络是什么网络技术 rpc服务器账号密码
0