Spring 弹簧&x2B;Websockets&x2B;跺脚+;经纪人+;网关不可伸缩

Spring 弹簧&x2B;Websockets&x2B;跺脚+;经纪人+;网关不可伸缩,spring,activemq,spring-cloud,spring-websocket,stomp,Spring,Activemq,Spring Cloud,Spring Websocket,Stomp,我们一直在评估Spring Stomp Broker websockets,以获得将在AWS上运行的全双工类型消息传递应用程序。我们曾希望使用Amazon MQ。我们正在向个人用户推送信息,并进行广播。因此,从功能上看,堆栈确实看起来不错。我们有大约40000-80000个用户。通过负载测试,我们很快发现spring stack或Amazon MQ的伸缩性都不是很好,存在以下问题: SpringCloudGateway实例不能处理超过3000个 死前的网袋 SpringWebSocket服务器实

我们一直在评估Spring Stomp Broker websockets,以获得将在AWS上运行的全双工类型消息传递应用程序。我们曾希望使用Amazon MQ。我们正在向个人用户推送信息,并进行广播。因此,从功能上看,堆栈确实看起来不错。我们有大约40000-80000个用户。通过负载测试,我们很快发现spring stack或Amazon MQ的伸缩性都不是很好,存在以下问题:

  • SpringCloudGateway实例不能处理超过3000个 死前的网袋
  • SpringWebSocket服务器实例也可以 在T3.5的中型电脑上,只能处理大约4000个WebSocket。当我们绕过 大门
  • AWS将小规模的活动MQ连接限制为100 服务器,然后在大型服务器上只有1000个。不,在两者之间,这个 这很奇怪
  • 是的,我们增加了机器上的文件句柄等,因此TCP连接不受限制。Spring不可能接近极限。我们正在发送一条18K的消息,对于负载,这是我们预期的最大值。在我们的结果中,消息大小几乎没有影响,它只是Spring堆栈上的连接

    StompBrokerRelayMessageHandler为每个STOMP连接打开到代理的连接。没有办法共享连接。因此,这使得Spring特性对于任何“真正的”web应用程序都毫无用处。为了支持我们的用户,AWS MQ大型服务器的成本意味着该解决方案的成本高得离谱,需要40台最大的服务器。在负载测试中,Amazon MQ机器什么也不做,有1000个用户,它没有加载。事实上,我们所有的代理都需要几台中型机器

    有没有人曾经使用Spring Stack构建过如上所述的真实解决方案。似乎没有人这样做,也没有人扩大规模。 是否有人编写了池StompBrokerRelayMessageHandle。我想这肯定是有原因的,因为它应该是默认的方法?这里的问题是什么

    似乎这个问题使得整个Spring Websocket+STOMP+Broker方法变得毫无用处,我们现在被迫使用另一种方法来提高消息的可靠性,以及在用户未连接的服务器之间进行消息传递(主要原因是我们使用Broker),并且也使用了一个简单的代理,并编写了一个注册表来管理客户机-服务器位置。因此,我们现在已经排除了经纪人,上面的数字与该模型一致。我们可以添加AWS SQS以确保消息的可靠性

    还剩下什么。我们打算使用SpringCloudGateway跨多个小型WebSocket服务器实现负载平衡,但这种方法似乎不起作用,因为服务器可以处理的WebSocket负载太小了。网关无法处理它。我们现在正在移除SpringCloudGateway并使用AWS负载平衡器。因此,现在我们可以获得更大的连接负载平衡。为什么SpringCloudGateway没有负载平衡

    还剩下什么。websocket服务器实例是t3.Medium,它们没有业务逻辑,只在两个客户机之间传递消息,因此它确实不需要更大的服务器。我们预计会比4000个连接好得多。然而,这几乎是可用的

    我们现在正在深入研究这些问题,以获得性能瓶颈所在的更多细节,但缺少任何调优指南或缩放信息并不意味着Spring有什么好处。将此与可扩展性非常好的节点解决方案进行比较,并在小型机器上处理更多连接

    下一种方法是查看WebFlux+WebSocket,但随后我们松开了STOMP。也许我们要检查一下原始的网袋


    这只是一个早期尝试,看看是否有人真的在愤怒中使用了SpringWebSockets,并且可以共享真实的工作生产架构,因为只有玩具示例可用。因此,如果您能在上述问题上提供任何帮助,我们将不胜感激。

    您是否找到了其他方法?如果是,什么?我也感兴趣,请告诉我们