首页 > 代码库 > ImFire即时通讯系统构建(架构)

ImFire即时通讯系统构建(架构)

msgServer集群(ms)

设计作用:该服务主要提供客户端的接入服务。每个ms维护当前接入用户的用户状态和心跳,每个ms地位是对等的。

设计考虑:

ms之间不会直接交互,减少交互的复杂度。在用户数量增大的情况,只需要简单增加ms节点就可以解决。

 

 routeServer集群(rs)

设计作用:该服务主要保存了为ms之间的信令传递(实际也就是用户之间)提供中转服务。可以配置共用n个rs主节点,每一个rs节点负责一部分用户与ms之间的映射关系,组成一个rs集群。

例如配置有4个rs节点分别为rs0,rs1,rs2,rs3,用户A登录成功后,通过 <用户Aid mod n>的方式计算出负责管理该用户位置的rs节点编号,向该rs节点发起注册路由信息,该rs节点维护 用户id与用户id登录的ms位置 之间的对应关系。

当需要向用户A发送消息时候,只需要通过<用户Aid mod n>算出rs节点的编号并向该rs节点投递消息,rs节点就会通过对应关系转发到用户a对应的ms节点,ms最终发送给用户A,完成消息的传递。

另外,可以配置编号为<(用户Aid mod n)  + n> 的rs节点为从节点。如主节点rs1发生了故障,由从节点rs4提供服务。

设计考虑:

像termTalk项目中设计的routeServer就是单点单服务的,当用户数量增大时,肯定会出现转发性能瓶颈。所以本系统必须解决这一个问题。

设计routeServer集群,增加了系统的复杂度,但是数据分由不同的rs节点进行转发,转发性能可以得到保障。

 

 

MsgServer与MsgServer之间不会直接交互,通过routeServer完成MsgServer之间的交互。

 

交互流程:

例如:用户AU给用户BU发送一个“文字正在输入的信息”。用户A连接了MsgServer,用户B连接了MsgServer BS。

 

ImFire即时通讯系统构建(架构)