消息代理的建议

Suggestion for message broker

在为这种情况选择消息代理(RaabitMQ、Redis 等)或其他合适的工具时,我需要一些帮助。

我正在升级我的游戏服务器。它是由 Node.js 编写的。它由几个进程组成,即GameRoom,Lobby,Chat等。当用户发出请求时,消息将被路由到相关进程进行处理。我通过我的代码路由来做到这一点,每个进程通过 node-ipc 相互通信。然而,这不是太有效并且不可扩展。另外,一些进程的工作负载非常高(Lobby 因为有很多请求与之相关),我们创建了几个 Lobby 进程并将消息随机路由到 Lobby 的不同进程。我认为消息代理在这种情况下可以提供帮助,而且我什至可以通过将不同的进程放在不同的物理服务器上来进行扩展。我想知道哪个消息代理适合这个?发件人可以将消息发送到多个消费者竞争消息并且只有一个消费者使用它并将消息回复给发件人的队列吗?谢谢。

我不会根据经验谈论 Kafka,但是任何消息队列解决方案,RabbitMQ 和 ActiveMQ 都会满足您的需要。

我假设您正在计划这样的流程:

REST_API -> queue -> Workers ----> data persistance  <--------+
                          |                                   |
                          +------> NotificationManager ----> user

NotificationManager 可以是通过 Websockets 或任何其他异步通信方法让用户知道的服务。

一些解决方案可以更好地组合在一起,减轻您的负担。不仅是消息队列而且是任务队列的解决方案将有办法从工作人员那里获得响应。

Machinery,一个最近引起我注意的项目完成了所有这些,同时使用 MongoDB 和 RabbitMQ 本身。