【发布时间】:2018-05-28 09:05:34
【问题描述】:
我开发了一个应用程序,我们需要处理通过websocket 连接连接到后端的 160k 并发用户。
我们决定使用spring websocket 实现和RabbitMQ 作为消息代理。
在我们的应用程序中,每个用户都需要订阅其用户队列 @987654327@ 以及其他用户也可以订阅 /topic/someUniqueName 的另一个队列。
在我们的第一个性能测试中,我们采用了一种简单的方法,即每个用户订阅两个新队列。
在运行测试时,RabbitMQ 在大约 800 个用户同时连接时静默死亡,因此大约有 1600 个队列处于活动状态 (See the graph of all RabbitMQ objects here)。
我读到了you should be careful opening many connections to RabbitMQ。
现在我想知道approach that is anticipated by Spring Websocket with opening one queue per user 是否是高负载系统的概念问题,或者我的系统是否存在其他错误。
【问题讨论】:
-
纯粹出于好奇:您是否尝试过使用 Kafka 而不是 RabbitMQ 进行设置?