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节点进行转发,转发性能可以得到保障。

TalkServer

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

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

    缘起termtalk 一切起源于我对蘑菇街termtalk开源IM系统源代码的好奇,termtalk简称tt.无论如何,都应该先向tt致敬,开源实属不易.看了一些分析tt架构的文章,感觉还不错,说是能 ...

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

    ImFire需求 一期需求(近期) 1.新用户(账号)注册. 2.用户登入登出,支持pc端,移动端同时登录. 3.获取好友列表,包含好友的各种信息,状态. 4.根据用户id或用户名申请添加好友. 5. ...

  3. 为自己搭建一个分布式 IM(即时通讯) 系统

    前言 大家新年快乐! 新的一年第一篇技术文章希望开个好头,所以元旦三天我也没怎么闲着,希望给大家带来一篇比较感兴趣的干货内容. 老读者应该还记得我在去年国庆节前分享过一篇<设计一个百万级的消息推 ...

  4. GGTalk——C#开源即时通讯系统源码介绍系列(一)

    坦白讲,我们公司其实没啥技术实力,之所以还能不断接到各种项目,全凭我们老板神通广大!要知道他每次的饭局上可都是些什么人物! 但是项目接下一大把,就凭咱哥儿几个的水平,想要独立自主.保质保量保期地一个个 ...

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

    介绍 easy-im是面向开发者的一款轻量级.开箱即用的即时通讯系统,帮助开发者快速搭建消息推送等功能. 基于easy-im,你可以快速实现以下功能: + 聊天软件 + IoT消息推送 基本用法 项目 ...

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

    视酷即时通讯系统(原创),成熟稳定,拥有和微信一样强大的功能不再是梦,节省几个月研发时间迅速融合进项目中: 1.首家支持聊天室群聊 2.支持和微信一样的语音聊天,可以显示时长.未读状态,自动轮播未读语 ...

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

    http://www.cnblogs.com/justnow/ GGTalk ——C#开源即时通讯系统 下载中心   GGTalk(简称GG)是可在广域网部署运行的QQ高仿版,2013.8.7发布GG ...

  8. 可在广域网部署运行的即时通讯系统 -- GGTalk总览(附源码下载)

      (最新版本:V6.2,2019.01.03 .Xamarin移动端版本已经推出,包括 Android 和 iOS) GGTalk开源即时通讯系统(简称GG)是QQ的高仿版,同时支持局域网和广域网, ...

  9. GGTalk即时通讯系统(支持广域网)终于有移动端了!(技术原理、实现、源码)

    首先要感谢大家一直以来对于GGTalk即时通讯系统的关注和支持!GGTalk即时通讯系统的不断完善与大家的支持分不开! 从2013年最初的GG1.0开放源码以来,到后来陆续增加了网盘功能.远程协助功能 ...

随机推荐

  1. gridview里日期显示格式

    Text='<%#Bind("EndDate","{0:yyyy-MM-dd}") %>'

  2. SQL*Loader之CASE11

    CASE11 1. SQL脚本 [oracle@node3 ulcase]$ cat ulcase11.sql set termout off rem host write sys$output &q ...

  3. SQL*Loader之CASE4

    CASE4 1. SQL脚本 [oracle@node3 ulcase]$ cat ulcase4.sql set termout off rem host write sys$output &quo ...

  4. Java多线程系列--“基础篇”02之 常用的实现多线程的两种方式

    概要 本章,我们学习“常用的实现多线程的2种方式”:Thread 和 Runnable.之所以说是常用的,是因为通过还可以通过java.util.concurrent包中的线程池来实现多线程.关于线程 ...

  5. 队列的存储结构和常见操作(c 语言实现)

    一.队列(queue) 队列和栈一样,在实际程序的算法设计和计算机一些其他分支里,都有很多重要的应用,比如计算机操作系统对进程 or 作业的优先级调度算法,对离散事件的模拟算法,还有计算机主机和外部设 ...

  6. Android 软键盘弹出时把原来布局顶上去的解决方法

    键盘弹出时,会将布局底部的导航条顶上去. 解决办法: 在mainfest.xml中,在和导航栏相关的activity中加: <activity            android:name=& ...

  7. Spark入门实战系列--5.Hive(上)--Hive介绍及部署

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Hive介绍 1.1 Hive介绍 月开源的一个数据仓库框架,提供了类似于SQL语法的HQ ...

  8. 机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解)

    数学优化方法在机器学习算法中至关重要,本篇博客主要来简单介绍下Conjugate Gradient(共轭梯度法,以下简称CG)算法,内容是参考的文献为:An Introduction to the C ...

  9. 使用 CSS3 制作一组超时尚的动画按钮效果

    通过 CSS3 的新特性,我们创作出好的交互和效果的可能性大大增加.这篇文章中,我想与大家分享一些 CSS3 动画按钮效果.我们的想法是创建一个具有不同风格的一些动画链接元素,鼠标悬停时有动画效果和活 ...

  10. RWD Table Patterns – 响应式表格解决方案

    在显示复杂的表格数据的时候,相信 Web 开发人员都碰到过显示不下的情况.RWD Table Patterns 是一个很好的响应式表格解决方案.它采用移动优先以及渐进增强的设计理念,在不支持响应式的浏 ...