小编Kim*_*orn的帖子

Spring + Websockets + STOMP + Broker + Gateway 无法扩展

我们一直在评估 Spring-Stomp-Broker-websockets,以使其成为在 AWS 上运行的全双工类型消息应用程序。我们原本希望使用 Amazon MQ。我们向个人用户推送消息,也进行广播。所以从功能上来说,这个堆栈看起来确实不错。我们有大约 40,000 - 80,000 名用户。通过负载测试,我们很快发现 Spring 堆栈或 Amazon MQ 都无法很好地扩展,存在以下问题:

\n\n
    \n
  1. Spring Cloud Gateway 实例在死亡之前无法处理超过 3,000 个\n的 websockets。
  2. \n
  3. Spring Websocket 服务器实例还可以在 T3.Medium 上处理大约 4,000 个 Websocket。当我们绕过网关时。
  4. \n
  5. 对于小型服务器,AWS 将 Active MQ 连接限制为 100 个,而在大型服务器上则限制为 1000 个。没有中间,这很奇怪。
  6. \n
\n\n

是的,我们增加了机器上的文件句柄等,因此 TCP 连接不是限制。Spring 不可能接近这里的限制。我们正在发送一条 18 K 的消息,用于负载,这是我们期望的最大值。在我们的结果中,消息大小几乎没有影响,它只是 Spring Stack 上的连接开销。

\n\n

StompBrokerRelayMessageHandler 为每个 STOMP Connect 打开与 Broker 的连接。没有办法集中连接。因此,这使得这个 Spring 功能对于任何 \xe2\x80\x98real\xe2\x80\x99 Web 应用程序完全无用。为了支持我们的用户,用于 MQ 的 AWS 大型服务器的成本意味着该解决方案非常昂贵,需要 40 台最大的服务器。在负载测试中,Amazon MQ 机器不执行任何操作,对于 1000 个用户,它没有加载。实际上,我们所有代理只需要几台中型机器即可。

\n\n

有没有人曾经使用 …

spring activemq-classic stomp spring-websocket spring-cloud

5
推荐指数
0
解决办法
1419
查看次数