WebSocket 和负载平衡是瓶颈吗?

2024-04-28

当有一堆充当 WebSocket 无人机的系统和这些无人机前面的负载均衡器时。当 WebSocket 请求进入 LB 时,它会选择一个 WebSocket 无人机,并建立 WebSocket。 (我在 ELB 上使用 AWS ELB tcp SSL 终止)

问题:现在创建的WebSocket是经过LB,还是LB将WebSocket请求转发给WebSocket无人机,从而客户端和WebSocket无人机之间有直接链接?

如果WebSocket连接经过LB,这将使LB成为一个巨大的瓶颈。

删除 LB 并为客户端提供 WebSocket 无人机的直接 IP 可以绕过这个瓶颈,但需要我自己创建这个逻辑,我打算这样做(取决于这个问题的答案)。

那么我对它的工作原理的想法是否正确?


AWS ELB 作为 LB

看完之后可能重复 https://stackoverflow.com/questions/15266702/proxying-websockets-with-tcp-load-balancer-without-sticky-sessions建议来自Pavel K https://stackoverflow.com/users/1948038/pavel-k我得出的结论是,WebSocket 连接将通过 AWS ELB,如下所示:

Browser <--WebSocket--> LB <--WebSocket--> WebSocketServer

这使得ELB成为瓶颈,我想要的是:

Browser <--WebSocket--> WebSocketServer

其中 ELB 仅用于为客户端提供可用 WebSocketServer 的主机名/IP。

DNS 作为负载均衡

上述问题可以通过 DNS 级别的平衡来规避,如可能重复 https://stackoverflow.com/questions/15266702/proxying-websockets-with-tcp-load-balancer-without-sticky-sessions。这样,当 ws.myapp.com 被请求时,DNS 将给出可用 WebSocketServer 的 IP。

缺点是,这需要通过上/下 WebSocketServer 更改不断更新 DNS(如果您的应用程序具有弹性,这将成为一个更大的问题)。

定制LB

另一种选择是创建一个自定义 LB,持续监视 WebSocketServer,并在客户端请求时返回可用 WebSocketServer 的 IP。

缺点是客户端需要执行单独的 (AJAX) 请求来获取可用 WebSocketServer 的 IP,而使用 AWS ELB 时,负载平衡会隐式发生。

结论

选择更好的邪恶..

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebSocket 和负载平衡是瓶颈吗? 的相关文章

  • 如何结合 websockets 和 http 来创建一个保持数据最新的 REST API? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在考虑使用 websockets 和 http 构建一个 REST API 其中我使用 websockets 告诉客户端新数据可用或直接向客
  • Node.js ws 包上的正确错误处理

    我正在努力将基于 REST 的数据管道替换为基于 Websocket 的数据管道 但我无法找到所有可能出错的地方 该系统是生产系统 因此如果出现故障并且无法恢复 将会发生非常糟糕的情况 这是我到目前为止所得到的 客户端 let server
  • 无法获取 ProxyPass 用户 IP 地址

    脚本语言 websocket new WebSocket wss site com game play PHP socket socket create AF INET SOCK STREAM SOL TCP size socket rec
  • 跨浏览器选项卡共享 websocket?

    我们希望每个浏览器都有一个套接字 而不是浏览器中的每个选项卡都有一个套接字 我们怎样才能实现它呢 我读到了有关共享网络工作者的文章 这很有前途 对此的参考也值得赞赏 不幸的是 据我所知 共享网络工作者尚未被 Mozilla 或 Intern
  • 有没有一个好方法来保存socket.io消息历史记录

    我想记录socket io消息历史记录 即两个用户交谈的内容 以供以后使用 是否有一些socket io内置函数可以实现这一点 或者如果没有 有什么好的方法来实现它 首先 您需要某种方法来识别具有唯一 ID 的用户 该 ID 在用户断开连接
  • Autobahn websockets Android 演示崩溃

    我是 websockets 的新手 我一直在使用 Autobahn websocket 来制作一个更大的项目 它在 python 和 js 版本中工作得很好 但我在 Android API 上遇到了麻烦 我正在遵循中的教程http www
  • Socket.IO中的跨域连接

    是否可以跨域方式使用Socket IO 如果是这样 怎么办 网络上提到了这种可能性 但没有给出任何代码示例 引用socket io 常见问题解答 http socket io faq Socket IO支持跨域连接吗 当然 在每个浏览器上
  • 我可以使用单个 websocket 服务器同时打开 2 个端口吗

    我是 websocket 编程的新手 目前我正在开发一个简单的 websocket 服务器 使用 c 可以响应 websocket 客户端 我设法在单个端口上使用 1 个客户端和 1 个服务器 我想知道是否可以打开 2 个端口 以便不同的客
  • Play框架2.5.0 Websockets示例[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 播放框架 2 5 0 Websockets 示例 在 play 2 5 0 websockets 代码
  • 通过 WebSocket 发送 ArrayBuffer 的子段而不进行复制

    我正在填充一个ArrayBuffer与要通过发送的数据WebSocket 数据具有可变大小 因此在序列化时我动态扩展ArrayBuffer如所须 然而 当序列化过程完成时 我经常在缓冲区末尾有未使用的空间 我不想发送这些空间 可以将所需部分
  • WebSocket Stomp over SockJS - http 自定义标头

    我在 javascript 客户端中使用 stomp js 而不是 SockJS 我正在使用连接到 websocket stompClient connect function frame stomp over sockJS 连接有 2 个
  • GO Websocket 向所有客户端发送消息

    这段代码一切正常 为了更好的阅读而缩短了它 When Client1向服务器发送请求 服务器立即响应他 但是 其他客户端看不到响应消息 所以我想更进一步 当客户端向服务器发送请求时 服务器会响应所有客户端 以便所有客户端都可以看到该消息 我
  • NodeJS 如何在没有 WebSocket 的情况下处理持久连接?

    我对 NodeJS 真的很陌生 如果我对某些东西听起来很天真 我很抱歉 并且我一直在深入研究示例的源代码聊天应用 http github com ry node chat 但是 我无法理解一件事 我知道 WebSockets 有助于处理持久
  • 从 Windows 命令行连接到 websocket

    是否可以从 Windows 命令行连接到 websocket 我已经从 Mac 终端使用了 WSCAT 但我似乎找不到替代方案 任何帮助 将不胜感激 Windows 中没有内置可与 WebSocket 配合使用的工具 虽然你可以使用teln
  • Netty:正确关闭 WebSocket

    如何从服务器端正确关闭 WebSocket 通道 连接 如果我使用一个ctx getChannel close the onerror在浏览器 Firefox 9 中抛出 页面加载时与 ws localhost 8080 websocket
  • Flask-SocketIO 未使用 Gevent/Gevent-websocket

    我正在使用 Flask 和 Flask SocketIO 构建用于 websocket 通信的 Web 界面 数据 API 我想开始转向使用 Gevent Gevent websocket Gunicorn 以及最终使用 Nginx 进行负
  • AWS ALB 截断 HTTP 响应

    我有一个带有目标组的 ALB 和运行 PHP API 的 ECS 集群 我正在尝试查询 API 以获得 CSV 响应 但如果请求通过 ALB 我会得到被截断的结果 当我通过 SSH 连接到运行集群的 EC2 实例并尝试手动运行curl 通过
  • 如何通过 libwebsocket 发送异步数据?

    我正在将 Warmcat 的 libwebsocket C 库用于小型 Websocket 服务器 我已经启动并运行了这些示例 并且可以发送数据以响应从 websocket 接收数据 例如回显发送的反向字节 但是 我无法弄清楚如何在不使用
  • 使用单个“proxyServer”将 Websocket 代理到多个目标

    我正在开发一个nodeJS websocket代理服务器 用例是当 websocket 请求到来时 我将检查其凭据 添加新标头 然后根据其组 来自用户 ID 将 websocket 连接重定向到其目标 webscoket 服务器 我发现大多
  • 会话亲和性和粘性会话之间的区别?

    有什么区别会话关联性 and 粘性会话在负载平衡服务器的上下文中 我见过这些术语可以互换使用 但有不同的实现方式 在第一个响应中发送 cookie 然后在后续响应中查找它 cookie 表明要发送到哪个真实服务器 Bad如果您必须支持无 c

随机推荐

  • 无法直接在iPhone上运行react-native应用程序(部署目标错误)

    问题 当我在模拟器中运行react native时 它工作正常 我现在尝试在直接连接到 MacBook 的 iPhone 上运行它 但出现了问题 有几个警告说Deployment Target is set to 7 0 这个具体是在哪里设
  • 如何仅从源代码构建 TensorFlow lite 而不是所有 TensorFlow?

    我正在尝试使用 Edgetpu USB 加速器与 Intel ATOM 单板计算机和 C API 进行实时推理 Edgetpu 的 C API 基于 TensorFlow lite C API 我需要包含来自tensorflow lite目
  • T-SQL 中的 raiserror 中的 Severity 和 State 在实际中如何使用?

    We use RAISERROR在 SQL Server 中 语法是RAISERROR Some Message 16 1 参数值有什么用16 and 1 with RAISERROR 在我的例子中 我上网查了一下 发现这些参数叫Sever
  • 将数组中的项目移动到最后一个位置

    我有一系列对象 我想将选定的对象移动到数组中的最后一个位置 我如何在 javascript 或 jquery 中执行此操作 这是我的一些代码 var sortedProductRow this product row for var s i
  • 连接到 Wikipedia API 的 WebRequest

    这可能是一个可悲的简单问题 但我似乎无法格式化帖子网络请求 响应以从维基百科API http en wikipedia org wiki Wikipedia API 如果有人可以帮助我查看我的问题 我已在下面发布了我的代码 string p
  • Spring MVC - 两次提供内容

    我已经花了一周时间寻找有关如何将内容服务器到我的网页的指导 两次 因为使用 Model 或 ModelAndView 切断内容一次可以工作 但如果用户再次与页面交互 我希望它加载更多内容同一页 Java Spring 后端方法 Get 有效
  • 调用需要很长时间执行的.php时如何解决“mod_fastcgi.c.2566意外的文件结束(可能是fastcgi进程死亡)”?

    在我的 php 应用程序中 我恢复 db2 数据库 它工作正常 但这里有一个巨大的 2 9GB 最后是500 Internal Server Error 我使用 exec 从 php cp db2 等运行 unix shell 命令 从 f
  • 带有 Google iframe 链接的 Google 静态地图图像

    我正在尝试显示一个谷歌静态地图 单击该地图时 将打开一个更大的 iframe 用户可以在其中平移 缩放等 JSF 在这里 http jsfiddle net thong Q4FE7 代码如下 div a class various fanc
  • Apache NiFi ExecuteScript:通过映射文件替换 Json 值的 Groovy 脚本

    我正在 Groovy 脚本上使用 Apache NiFi 0 5 1 以将传入的 Json 值替换为映射文件中包含的值 映射文件如下所示 它是一个简单的 txt Header1 Header2 Header3 A some text A2
  • 如果我使用不同数量的核心,XGBoost 会产生相同的结果吗?

    我在两台机器上安装了完全相同版本的 XGBoost 0 4 两台机器之间的唯一区别是 RAM 和内核数量 8 与 16 使用完全相同的数据 我无法重现相同的结果 它们略有不同 小数点后第四 第五位 种子保留为默认值 它是高度特定于实现的 但
  • Android:如何禁止应用程序在扫描 NFC 标签时重新打开?

    我正在编写一个 Android 应用程序 用于从 Mifare Classic 卡 4k 读取数据 我已经编辑了 AndroidManifest xml 文件 以便应用程序启动 或者我可以选择另一个使用 NFC 的应用程序 但是 当我的应用
  • 在 yii2 中搜索两个日期

    日期可以用不同的格式表示 表格本身看起来像这样 book varchar 250 NOT NULL date INT NOT NULL 现在我的问题是我无法在两个日期之间的范围内实现搜索 例如 有 5 本书 日期不同 但开始日期开始 在31
  • Spring-WS WSDL生成问题

    我正在尝试制作一个非常简单的 Web 服务 但在让 spring 生成正确的 wsdl 时遇到一些困难 我已尽力复制此示例春季教程 http static springsource org spring ws sites 2 0 refer
  • 在 AngularJS 中使用 iFrame

    Using Angular 1 2 我正在尝试找出一种 有角度 的方式来加载 iFrame 但我在任何地方都找不到任何教程 任何真正的讨论 基本上 我有一个显示链接列表的搜索页面 单击链接应调用控制器中的一个函数 该函数将数据 可能通过 h
  • 测试在私有变量中保留其状态的类

    我正在为我的班级编写单元测试 此类在某些情况下保留其状态private变量 我不想公开暴露 所以场景是 如果我调用一个方法 第一次它会保持该状态private属性并调用委托方法并返回一些结果 当我第二次调用相同的方法时 输出将根据之前的输入
  • 如何在 Perl 中将纪元时间转换为正常时间?

    我正在尝试编写一个 Perl 脚本来解析日志 其中每行的第二个值是日期 该脚本接受三个参数 输入日志文件 开始时间和结束时间 开始时间和结束时间用于解析出每行上位于这两个时间之间的特定值 但为了正确运行这个 我将开始和结束时间转换为纪元时间
  • BigQuery 表中可以按小时进行分区吗?

    谷歌文档只讨论日常分区 但是模型中是否有任何东西阻碍人们将分区填充到具有其他时间段 例如 小时或周 的表中 在 小 表中进行分区是否有任何限制或缺点 现在only DAY支持分区表 不支持按小时或按月 有几个对新功能的功能请求 但没有实施时
  • 在 Spring 中以编程方式解析 AliasFor 注释值

    我有一个注释 Target ElementType TYPE Retention RetentionPolicy RUNTIME public interface A Class value 这是在课堂上使用的 B D class publ
  • 如何通过 Xcode 4 的组织者提交应用程序?我收到错误

    我安装了 Xcode 4 认为它与 Xcode 3 类似 但现在我无法使用组织器将我的二进制文件发送到 App Store 我认为这是执行此操作的正确方法 有人让它正常工作吗 不确定我需要更新什么设置 我得到的只是一条 无效的二进制 消息
  • WebSocket 和负载平衡是瓶颈吗?

    当有一堆充当 WebSocket 无人机的系统和这些无人机前面的负载均衡器时 当 WebSocket 请求进入 LB 时 它会选择一个 WebSocket 无人机 并建立 WebSocket 我在 ELB 上使用 AWS ELB tcp S