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。

时间: 2024-11-10 14:33:42

ImFire即时通讯系统构建(架构)的相关文章

ImFire即时通讯系统构建(前言)

缘起termtalk 一切起源于我对蘑菇街termtalk开源IM系统源代码的好奇,termtalk简称tt.无论如何,都应该先向tt致敬,开源实属不易.看了一些分析tt架构的文章,感觉还不错,说是能支持高并发高可用的.听说有一些公司也借用了该开源代码做产品,那tt应该还是不错的.但是正等我去打开tt服务端源码向学习一下的时候,感觉代码中不尽如意的地方不少了.看得不算仔细,但是架构中单点服务的位置太多了,例如route server只有一个,im客户端发的每一个消息都会广播到所有的msg ser

ImFire即时通讯系统构建(需求)

ImFire需求 一期需求(近期) 1.新用户(账号)注册. 2.用户登入登出,支持pc端,移动端同时登录. 3.获取好友列表. 4.根据用户id或用户名申请添加好友. 5.发送单聊消息(可发往陌生人). 6.新建群聊. 7.申请加入群聊. 8.发送群聊消息. 9.获取聊天记录. 二期需求(远期)

【实战】如何亲手搭建一个分布式 IM(即时通讯) 系统

前言 老读者应该还记得我之前分享过一篇<设计一个百万级的消息推送系统>:虽然我在文中有贴一些伪代码,依然有些朋友希望能直接分享一些可以运行的源码:这么久了是时候把坑填上了. 目录结构: 本文较长,高能预警:带好瓜子板凳. 于是在之前的基础上我完善了一些内容,先来看看这个项目的介绍吧: CIM(CROSS-IM) 一款面向开发者的 IM(即时通讯)系统:同时提供了一些组件帮助开发者构建一款属于自己可水平扩展的 IM . 借助 CIM 你可以实现以下需求: IM 即时通讯系统. 适用于 APP 的

我的即时通讯系统发布前,先小秀一下

一.开发概要: 开发人员:本人 联系电话:18667102122 开发人数:1人 版权所有:杭州云寻觅网络科技有限公司 开发周期:2014-05-27 至今 备注:就一个人开发的,不要总是拿这个做了2,3个月的东西,跟几千人做了10多年的产品去比较,没有可比性.   所以比较的时候希望大家别失去理智! 二.架构及概述 1.总体架构图 2.服务端功能模块图 3.客户端功能模块图 4.客户端浏览器组件功能模块图 三.组成文件: 服务端:ImServer_5_0_0.exe 大小 88.6MB(含jd

转:移动端即时通讯系统实践

移动端即时通讯系统实践 2016-04-19 廖锦幸 iOS开发探索 在信息高度发达的今天,IM基本上已经成为了一个社交应用的标配.本文将以一个移动开发者的视角,探讨移动端即时通讯系统的技术选型和关键要点. 1 即时通讯系统的需求 任何技术系统都来源于真实业务的需求,做架构设计之前应该先设定好目标.作为一个即时通讯应用,可以参考微信的使用体验,你需要保证以下特性: 1,实时.消息的接收端应该能够及时收到并处理消息. 2,不丢.需要保证所有的消息都顺利送达. 3,不重.重复的消息对用户来说是一种糟

easy-im:一款基于netty的即时通讯系统

介绍 easy-im是面向开发者的一款轻量级.开箱即用的即时通讯系统,帮助开发者快速搭建消息推送等功能. 基于easy-im,你可以快速实现以下功能: + 聊天软件 + IoT消息推送 基本用法 项目分为easy-im-client.easy-im-server.easy-im-common三个模块. 服务端: 执行mvn package后生成easy-im-server.tar.gz,解压后至./lib目录执行命令: java -jar -Dport=8888 easy-im-server-1

GGTalk ——C#开源即时通讯系统

http://www.cnblogs.com/justnow/ GGTalk ——C#开源即时通讯系统 下载中心 GGTalk(简称GG)是可在广域网部署运行的QQ高仿版,2013.8.7发布GG V1.0版本,至今最新是5.5版本,关于GG更详细的介绍,可以查看 可在广域网部署运行的QQ高仿版 -- GGTalk总览. GGMeeting是可在广域网部署运行的视频会议系统Demo,2015.05.11发布V1.0版本,关于GGMeeting更详细的介绍,可以查看 打造自己的视频会议系统 GGM

视酷即时通讯系统应用源码 V1.0

视酷即时通讯系统(原创),成熟稳定,拥有和微信一样强大的功能不再是梦,节省几个月研发时间迅速融合进项目中: 1.首家支持聊天室群聊 2.支持和微信一样的语音聊天,可以显示时长.未读状态,自动轮播未读语音:     3.支持发送图片.表情.GIF动画表情等:     4.数据库分库分表,速度极快,界面细节处理优美,bug极少.     5.另有注册用户.用户列表.加好友.好友列表等功能.     6.实现了发消息后,如接收方不在线,除了离线消息外,会自动推送通知,留了推送接口    7.安卓端和苹

区块链资产交易所搭建IM即时通讯系统开发

区块链资产交易所搭建IM即时通讯系统开发 [本文由源中瑞涂先生编辑/交易所开发VX搜索:ruiec999]随着数字资产交易市场的演进和机构投资者的参与,交易所领域创业面临的合规.安全.专业.透明等问题也逐渐成为其新的竞争力增长点.源中瑞业务涵盖:数字资产交易所开发.场外交易所开发.币币交易所开发.数字资产多币种钱包开发.数字资产抵押系统开发.IM即时通讯系统开发等各类区块链技术系统.(数字资产交易所:jy.ruiec.com)根据18年上半年全球各地交易所数量增长迅速,除传统中心化交易所以外,交