【转】分布式websocket服务器
最近在开发一个游戏的客服系统,同一时间咨询问题的玩家多,为了保证服务器高可用,需要利用分布式,另外服务器宕机还需要玩家无感知重连,最关键的一点是如何实现服务器的高扩展性,即性能不足时,如何以最少的代价增加一台新的服务器。
1.单台websocket
单台消息互传实现十分简单,通过websocket中转就可以了,不再多加赘述。
2.多台websocket
当客户端不在同一台服务器上时,如何实现消息互通?
一开始的时候,我是想着把server A 与 server B 通过websocket连接起来,互发消息,这种方案在服务器数量小的时候,维护起来也不算麻烦。
例如增加server C 就要把 A、B、C连起来,但是每增加一台服务器,工作量指数级增长,还要考虑到服务器宕机、服务器心跳的各种问题,想想都头疼。
3.多台websocket消息推送
这下舒服了。
1.使用全局redis存储客户端与服务端的关系;
2.webscoket服务器各自订阅不同的消息队列。
发消息流程:
情况一:
clientA 给 clientB 发消息时,先从缓存中读取clientB在哪个服务器上,发现clientA 与clientB 在同一服务器时,消息直接发送至clientB
情况二:
clientB 给 clientC 发消息时,从缓存中读到clientC和clientB并不在同一服务器上,例如clientC在wsB,那么clientB将消息发送到rabbitmq队列B,然后rabbitmq推送到wsB,wsB给clientC发送消息。
4.总结
- 新增服务器只需要多订阅一条消息队列。
- 服务器宕机时,客服端重连websocket,重新绑定redis的server关系。
- rabbitmq的ack机制保证消息的可靠性。
5.改进
压缩消息,节省带宽。推荐使用google的protobuf,就是稳。
【转】分布式websocket服务器相关推荐
- python游戏服务器框架_mqant首页、文档和下载 - Golang/python语言开发的分布式游戏服务器框架 - OSCHINA - 中文开源技术交流社区...
mqant mqant 是一款基于 Golang 语言的简洁,高效,高性能的分布式游戏服务器框架,研发的初衷是要实现一款能支持高并发,高性能,高实时性的游戏服务器框架,也希望 mqant 未来能够做即 ...
- 深入浅出Websocket(二)分布式Websocket集群
前言 最近在构建两个系统的实时通信部分,总结一下所学. 这是一个系列文章,暂时主要构思四个部分 深入浅出Websocket(一)Websocket协议 深入浅出Websocket(二)分布式Webso ...
- 分布式 WebSocket 集群解决方案
作者 | weixin_34194702 来源 | blog.csdn.net/weixin_34194702/article/details/88701309 问题起因 最近做项目时遇到了需要多用户 ...
- IM即时通信分布式后端方案(分布式websocket)
最近在准备春招项目时碰到了一个问题,在自己的项目中想实现聊天的功能,传统的http请求轮询对服务器资源太浪费,于是采用websocket. websocket通信需要依靠javax.websocket ...
- pomelo分布式聊天服务器详解
pomelo分布式聊天服务器详解 2014-01-05 11:43:49| 分类: node | 标签:pomelo pomelo聊天 nodejs分布式聊天 pomelo分布式 |举报| ...
- python websocket异步高并发_Python3.5异步和多个websocket服务器
我在Ubuntu上使用pythonwebsockets4.0.1.我想有2个websocket服务器运行.我可以通过为每个线程创建2个线程和独立的事件循环来实现这一点.我所说的"某种工作&q ...
- js websocket同步等待_WebSocket硬核入门:200行代码,教你徒手撸一个WebSocket服务器...
本文原题"Node.js - 200 多行代码实现 Websocket 协议",为了提升内容品质,有较大修订. 1.引言 最近正在研究 WebSocket 相关的知识,想着如何能自 ...
- 在IIS上搭建WebSocket服务器(三)
在IIS上搭建WebSocket服务器(三) 原文:在IIS上搭建WebSocket服务器(三) 编写客户端代码 1.新建一个*.html文件. ws = new WebSocket('ws://19 ...
- websocket 更新点位 浏览器卡顿_我们来看看Swoole是如何实现WebSocket服务器及客户端的...
php自学中心 2019-11-08 10:25:30 文章来自:laravel学院WebSocket 概述 在此之前,有必要对 WebSocket 的原理做简单的说明,WebSocket 复用了 H ...
最新文章
- Pyhton,OpenCV对象检测之——Haar级联人脸及眼睛检测
- android 帖子功能,anroid 各个功能的帖子 和代码片段
- 科学互驳:大脑细胞活到老,长到老?
- 惊呆了!B 站公告低级错误,将公司名写成“百度”
- 解决傲游浏览器没有兼容模式
- ssl双向认证_SSL握手协议不清楚?vTrus为你讲解其详细流程
- 网工面对HR应该提前做好哪些准备?
- django mysql 表单_Python Django 表单提交数据到mysql并展示
- 微信上传素材 java_微信素材上传(JAVA)
- 链接聚合是将一组物理接口_500字描述华为VLAN聚合工作原理 你看懂了吗?
- 各大厂面试高频的面试题新鲜出炉,你能答上几道?
- 矢量归一化_7. 从矢量观测到姿态观测
- Python语言认识和实用工具(1)
- 1.TCP/IP 详解卷1 --- 概述
- 190601每日一句
- 使用phpQuery 抓取HTML 页面内容
- 哈夫曼编码(Huffman Coding)多图详细解析
- 浅析内网沟通软件有什么特点
- elementui el-tab添加badge,以及实时更新标记值
- Vue-router的使用