websocket 发送多条消息如何判断全部接收_Websocket的分布式集群开发及部署
背景
我们部署单点websocket服务时很简单就可以实现,但是现实中的业务往往对性能要求非常高,因此单点服务并不能满足我们的需求,所以我们需要横向的扩展服务,来满足性能要求。
举个简单的例子,我们建立一个简单的聊天室,人数少的时候可以正常提供服务,但当聊天的人数超过单台服务器所能服务的数量时,服务器就不能提供相应的服务。我们可以通过提高服务器的配置来继续满足,但是提升配置后依然会达到上限。所以我们需要提供分布式的websocket服务,不再集中在一台服务器上,我们可以通过横向扩展,在多台服务器上部署相同的服务,来满足我们的扩展需求。
设计
原理
Websocket服务中正常启动后,每个用户连接后会一直存在,因此连接要保存在内存中,并在服务中管理起来,根据不同的需要,服务确定是否要通知集群中其他连接信息
基本的原理
- websocket服务中,单独启用一个线程来订阅MQ,线程中收到订阅,根据业务需求来确定通知所有连接与否。
- 单独提供一个RabbitMQ服务
- 接收websocket的发送业务处理集群的消息
- 接收业务处理集群发送websocket的消息,这里采用的是广播,不再对业务中进行判断是否发送,由websocket服务判断是要发送给哪个连接
- 业务服务集群,监听mq提供的业务处理消息,然后再将结果发送到websocket订阅的消息队列中
架构图
代码
关注微信公众号:战渣渣
回复关键字 “ws集群” 获取源码
websocket 发送多条消息如何判断全部接收_Websocket的分布式集群开发及部署相关推荐
- php微信公众号向指定客服发信息,微信公众号给用户发送一条消息 客服消息
可以用客服消息接口或模板消息接口实现.但是需要认证公众号才能有权限. 认证服务号可以发送客服接口消息[需要对应openid24小时内有互动]和模板消息,订阅号则没有模板消息权限. 下面是发送客服消息的 ...
- 领英如何高效加好友,领英一天最多可以发送多少条消息?
一个领英账号可以加3万好友,加为好友后彼此可相互关注,也可以直接在领英上面发站内消息,还可以直接查看到对方的电话.邮箱.社交账号等重要的联系方式.但领英对加好友是有限制的,每周都有邀请名额的限制,这就 ...
- RabbitMQ#RabbitMQ+Haproxy消息队列集群和代理部署
文章目录 一.消息队列/中间件 1.RabbitMQ本质上起到的作用就是削峰填谷 2.MQ简介(RabbitMQ比Kafka) 3.MQ消息队列的分类 二.RabbitMQ介绍(端口15672) 1. ...
- vs如何实现tcp连续发送多条消息_消息队列之 RabbitMQ
为什么要使用MQ消息中间件?它解决了什么问题?关于为什么要使用消息中间件?消息中间件是如何做到同步变异步.流量削锋.应用解耦的?网上已经有很多说明,我这里就不再说明.我在接下来的RabbitMq系列博 ...
- rocketmq发送第一条消息(三)
直接上代码 导包,pom.xml <dependency><groupId>org.apache.rocketmq</groupId><artifactId& ...
- java tcp发消息给硬件_java – TCP客户端/服务器通信只发送第一条消息?
我在java中设置一个简单的TCP客户端服务器交互. 服务器: 服务器是用Java编写的桌面客户端: import java.io.BufferedReader; import java.io.Dat ...
- nodejs实现公众号服务URL绑定验证,nodejs实现公众号关注并回发送一条消息,以及关注之后的聊天自动回复消息
首先关注公众号的时候,公众号会发送一条 post 请求到 nodejs 服务器,这条消息是 xml 数据类型,这里就用到 xml 解析,demo 里用的是 fast-xml-parser@3.12.1 ...
- 消息队列专题(架构篇):RabbitMQ 的集群架构模式
RabbitMQ 的集群架构模式主要有四种,分别是主备模式.远程模式.多活模式和镜像模式,本篇博客将依次介绍这四种架构模式,其中的镜像模式使用范围最广,我们将对其进行重点介绍. 主备模式 主备模式是指 ...
- mqtt 负载均衡_EMQ百万级MQTT消息服务(分布式集群)
在强大的单机也比不上集群,EMQ的集群模式很粗暴,只需要把EMQ服务关联在一起然后负载均衡就可以达到集群的效果,这样就算面对1000CK问题也迎刃而解 附上: 喵了个咪的博客:w-blog.cnEMQ ...
- 【RAC】使用一条“ps”命令获取Linux环境下全部RAC集群进程信息
如何仅使用一条ps命令便能获取到所有与RAC集群进程相关的信息. 从所使用的命令角度上看很简单,仅需使用ps命令结合grep命令便能实现.问题关键是需要确定检索哪些关键字. 1.与RAC集群有关的 ...
最新文章
- 第十六届全国大学生智能车各分赛区所需要的比赛系统器材
- 贝塞尔曲线(Bezier Curves)
- 第一次使用aspnet_compiler失败记录
- io_uring设计理念及使用方式总结
- CSS布局奇淫巧计之-强大的负边距
- [Leetcode][第93题][JAVA][复原IP地址][剪枝][回溯]
- js实现shallowReactive和reactive
- php msgid排重,如何应用php数组对百万数据停止排重
- EntityFramework 实体拆分与表拆分
- 【优化求解】基于matlab遗传算法结合粒子群算法求解单目标优化问题【含Matlab源码 1659期】
- 加权平均数的例子_加权平均法举例说明
- STM32入门笔记(02):麦克纳姆轮、TB6612电机驱动、PID电机控制和编码器学习记录
- 西门子S7系列PLC与触摸屏模拟仿真(无需实物)
- 云计算三种架构(IaaS, PaaS, SaaS)及部署模型
- Shell实现俄罗斯方块小游戏
- 英国高端SPA级奢养护肤品牌EVE LOM相继入驻成都IFS、北京连卡佛;FILA斐乐携手梵高博物馆推出全新联名系列 | 知消...
- Java操作word文档将docx转换为pdf格式
- 吻吻更健康!揭晓接吻的11大优点
- 【1075】药房管理
- 《C++程序设计》在线平时作业2
热门文章
- 怎么做301永久重定向
- SLAM_2019-ICCV_GSLAM:通用 SLAM 框架和基准
- SLAM_局部束调整(local Bundle Adjustment, BA)步骤与代码示例
- 一个VO(Visual Odometry)的简单实现
- Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
- 年度重磅!2020年度中国计算机视觉人才调研报告正式发布
- SNIP物体检测算法理解
- LeetCode之根据字符出现频率排序
- 关于微信支付后回调验证的处理
- MySQL解决中文编码问题