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 和负载平衡是瓶颈吗? 的相关文章

随机推荐

  • 无法直接在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