开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 4164|回复: 14
收起左侧

[分享] [ Mark ] 即时通讯框架 - 分布式部署

[复制链接]
结帖率:93% (66/71)
发表于 2020-1-7 16:06:30 | 显示全部楼层 |阅读模式   上海市上海市
本帖最后由 puti 于 2020-1-8 14:14 编辑
先感谢"怪兽乐园"群里面的大神, 受到很多启发,整理思路, 分享出来


本文主要分享的是消息如何在多个服务器间转发的问题,但这并不代表一个完整的即时通信服务器系统,诸如注册,登录,离线消息,文件,  P2P打洞等功能这些都未在本文的讨论范围之内



0STYG`6K~{Z5L6~08SM[I4L.png
       1. 对于即时通讯来说,在用户量少的时候,一台服务器就足以提供所有的服务.可是当用户数量越来越多时,一台服务器无法满足所有用户的需求,这             就要进行服务扩容,进行分布式部署     
       2. 如图片所示,不同的用户登录到不同的消息服务器上,那么客户1客户2发消息时,消息服务器-1 先收到消息,消息服务器-1首先判断客户2是否             登录在本 服务器上,如果是,那么直接转发消息即可。如果客户2不在本服务器上,那就到路由服务器查询客户2的位置信息,比如是登录的哪台消          服务器,然后把这个位置信息和消息内容发送到转发服务器, 转发服务器在发送的指定的消息服务器,最后,指定的消息服务器在把消息发送到客户2,这          就可以达到消息的转发

             简单总结消息的路径,如下
第一种情况,两个客户不在同一个服务器
                客户1——>消息服务器1——>路由服务器——>转发服务器——>消息服务器2——>客户2
第二种情况,两个客户在同一个服务器
                客户1——>消息服务器1——>客户2                   3. 每台消息服务器在收到客户的进入和退出状态后, 都需要把客户id,客户状态,消息服务器id等发送给路由服务器进行统一的管理,以供在转发消息时可              以 查询某个客户所在消息服务器位置,路由服务器保存的大体数据格式可看图片
       4. 转发服务器特点就仅是转发消息,不保存任何的信息,所以对于网速没有要求.转发慢了,就增加消息服务器.不需要改动其他的服务器
       5. 路由服务器使用HASH保存位置数据,也可以用单独的数据库来保存,这样可以保证路由服务器异常后可以实时的恢复.

百万,千万用户的通讯框架不在本文考虑范围内, 这个框架适合10万以内用户请大神不要抬杠
此框架也可以用于手机群控和电脑群控和各种的软件实时监控, 有想法的朋友可以互相交流











本帖被以下淘专辑推荐:

结帖率:94% (101/108)

签到天数: 20 天

发表于 2022-3-3 11:46:56 | 显示全部楼层   广西壮族自治区梧州市
个人感觉太麻烦了
回复 支持 反对

使用道具 举报

结帖率:96% (54/56)

签到天数: 24 天

发表于 2021-5-4 01:41:08 | 显示全部楼层   湖南省邵阳市
这样的话,发送一个消息,要经过2台服务器中转才能达到核心服务,无疑转发服务器的处理数据流最大。
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)

签到天数: 2 天

发表于 2021-4-16 01:15:01 | 显示全部楼层   山西省吕梁市
感谢大佬分享思路
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 3 天

发表于 2020-10-8 23:18:13 | 显示全部楼层   广东省广州市
虽然没看到源码  但是看到这个思路感觉自己就能够写出来了
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 3 天

发表于 2020-10-8 23:16:25 | 显示全部楼层   广东省广州市
框架在哪里 我没看到啊 啊啊
回复 支持 反对

使用道具 举报

结帖率:94% (30/32)
发表于 2020-7-10 17:12:54 | 显示全部楼层   河南省平顶山市
拿走看看
回复 支持 反对

使用道具 举报

结帖率:33% (2/6)
发表于 2020-7-10 16:58:19 | 显示全部楼层   广东省广州市
看得懂但是不知道怎么下手
回复 支持 反对

使用道具 举报

结帖率:71% (12/17)

签到天数: 7 天

发表于 2020-7-7 14:08:57 | 显示全部楼层   广东省深圳市
现在已经过去几个月了  老铁 你研究的怎么样了   
回复 支持 反对

使用道具 举报

结帖率:93% (66/71)

签到天数: 16 天

 楼主| 发表于 2020-3-12 18:56:43 | 显示全部楼层   上海市上海市
胡小宝 发表于 2020-2-7 21:55
来一份例子吧。。。。。。。。。。。。。。。。。我有点懵逼

只提供思路, 能懂就懂, 不懂也没办法. 例程设计东西太多,累啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表