websocket如何做负载均衡

这篇具有很好参考价值的文章主要介绍了websocket如何做负载均衡。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提到负载均衡,首先想到的就是nginx,但是它毕竟是个反向代理,客户端先连上nginx,然后经过负载均衡策略在连上目标服务器,然后要取消超时,显然连接都还是在nginx上,只是业务实现了负载均衡。所以这种方式不可取,也不好扩展,毕竟一台nginx的长连接数也是有上限的。

1、连接

客户端发起连接之前首先请求一个中心的 http server,此服务会根据客户端的IP地址,选择最近的且负载最小的ws server地址,客户端再发起ws连接,这样就实现了连接的负载均衡和优化。甚至当用户从新疆来到海南,我们可以让它切换到海南的ws。因此这种方式扩展性很好,非常灵活。

客户端连接成功后,ws就要将userid, ws_ip 存储到数据库中。

2、发送数据

消息的收发采用消息队列,其中每一个 ws_ip 对应一个 topic

比如向 user1 发送数据,首先找到 user1 连接在哪个ws,然后将消息推送到对应的topic

如果 user1 不在线,就发送到通用的topic0,显然 topic0 也需要有多个,比如 topic0_0, topic0_1,防止单个 topic 太大。

3、接收消息

ws拉取自己的 topic 消息,并发送到 user1,如果发现 user1 并不在自己这里,说明 user1 已经断开连接,这个时候,先找到 user1 连接在哪台ws,将消息投递到对应的 topic,如果没有找到投递到 topic0。

4、消费topic0

使用另一个程序来消费 topic0,找到 user1 连接在哪台ws,将消息投递到对应的 topic,如果没有找到投递到 topic0。如果 user1 长时间都不连接,比如7天,那么就将消息存储在数据库A,减少无用的轮训,但是,当 user1 突然某一天连上了,那么ws应该发起一个任务将数据库A中 user1 的消息投递到对应的 topic。文章来源地址https://www.toymoban.com/news/detail-613800.html

到了这里,关于websocket如何做负载均衡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Dubbo负载均衡策略之 一致性哈希 | 京东云技术团队

    本文主要讲解了一致性哈希算法的原理以及其存在的数据倾斜的问题,然后引出解决数据倾斜问题的方法,最后分析一致性哈希算法在Dubbo中的使用。通过这篇文章,可以了解到一致性哈希算法的原理以及这种算法存在的问题和解决方案。 在这里引用dubbo官网的一段话——

    2024年02月08日
    浏览(49)
  • 论文阅读-基于动态权重的一致性哈希微服务负载均衡优化

    论文名称: 基于动态权重的一致性哈希微服务负载均衡优化 随着互联网技术的发展,互联网服务器集群的负载能力正面临前所未有的挑战。在这样的背景下,实现合理的负载均衡策略变得尤为重要。为了达到最佳的效率,可以利用 一致性哈希算法对集群负载均衡系统进行负

    2024年02月20日
    浏览(44)
  • 24 | MySQL是怎么保证主备一致的?

    以下内容出自《MySQL 实战 45 讲》 https://time.geekbang.org/column/article/76446 如图所示就是基本的主备切换流程。(M-S结构) 节点 A 到 B 这条线的内部流程是什么样的 ? 下图中画出的就是一个 update 语句在节点 A 执行,然后同步到节点 B 的完整流程图。 备库 B 跟主库 A 之间维持了一

    2024年02月16日
    浏览(37)
  • 怎么保证缓存与数据库的最终一致性?

    目录 零.读数据的标准操作 一.Cache aside Patten--旁路模式 二.Read/Write Through Pattern--读写穿透 三.Write Back Pattern--写回 四.运用canal监听mysql的binlog实现缓存同步 这里想说的是不管哪种模式读操作都是一样的,这是一种统一的规范: 但写操作和同步策略却有不同。 这个是最常见的

    2024年04月08日
    浏览(47)
  • SpringCloud Nacos Gateway 负载均衡 Netty的Websocket

    目录 一、Gateway的WS协议配置 二、问题引出 三、解决方法 一、Gateway的WS协议配置 ws: 代表通过websocket长连接协议,其他是gateway的常规配置。 二、问题引出 我已搭建了传统的Netty聊天室服务,即一个SpringBoot项目中同时存在web项目与Netty服务器,配置如下:服务器实际上会使用

    2024年02月11日
    浏览(39)
  • nginx怎么做负载均衡

    Nginx 是一个高性能的开源反向代理服务器,可以用于实现负载均衡。负载均衡指的是将用户请求平均分配给多个服务器,以提高整体系统性能和可靠性。下面是一个详细介绍如何使用 Nginx 实现负载均衡的步骤: 步骤 1:安装 Nginx 首先,需要安装 Nginx。具体的安装方法会根据

    2024年02月16日
    浏览(39)
  • 高并发扣款,如何保证结果一致性

    转载至我的博客 ,公众号:架构成长指南 在金融系统中,我们会跟钱打交道,而保证在高并发下场景下,对账户余额操作的一致性,是非常重要的,如果代码写的时候没考虑并发一致性,就会导致资损,本人在金融行业干了 8 年多,对这块稍微有点经验,所以这篇聊一下,

    2024年02月03日
    浏览(51)
  • 从kafka如何保证数据一致性看通常数据一致性设计

    在数据库系统中有个概念叫事务,事务的作用是为了保证数据的一致性,意思是要么数据成功,要么数据失败,不存在数据操作了一半的情况,这就是数据的一致性。在很多系统或者组件中,很多场景都需要保证数据的一致性,有的是高度的一致性。特别是在交易系统等这样

    2024年02月19日
    浏览(48)
  • MySQL是如何保证数据一致性的?

    通过上文《MySQL是如何保证数据不丢失的?》可以了解DML的操作流程以及数据的持久化机制。对于一个数据库而言,除了数据的持久性、不丢失之外,一致性也是非常重要的,不然这个数据是没有任何意义的。在使用MySQL时,数据不一致的情况也可能出现,所以,本文就来看看

    2024年02月03日
    浏览(62)
  • 使用双异步后,如何保证数据一致性?

    大家好,我是哪吒。 在上一篇文章中,我们 通过双异步的方式导入了10万行的Excel ,有个小伙伴在评论区问我, 如何保证插入后数据的一致性呢? 很简单,通过对比Excel文件行数和入库数量是否相等即可。 那么,如何获取异步线程的返回值呢? 我们可以通过给异步方法添加

    2024年01月23日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包