5

目前,我们设计并计划将我们的系统转换为微服务架构模式。

为了松散耦合,我们考虑使用 JMS 主题进行事件驱动设计。这看起来很棒。但我现在不知道如何解决多个微服务实例的问题。对于故障转移和负载平衡,我们有每个服务的n 个实例。如果将事件发布到主题,每个实例都将接收并处理该事件。

可以使用数据存储中的锁和已处理状态来处理此问题。但是这个解决方案看起来非常昂贵,并且每个实例都有相同的工作。这对我来说不是负载平衡。

这种模式是否有一些好的解决方案或最佳实践?

4

1 回答 1

7

为什么不使用 aQueue而不是 a Topic?然后,您的实例将竞争消息,而不是全部获得副本。

编辑

rabbitmq 可能更适合您 - 发布到扇出交换并绑定任意数量的队列,每个队列有任意数量的竞争消费者。

我还看到了在竞争客户端使用相同客户端 ID 连接的情况下使用的 JMS 主题。一些(全部?)经纪人将只允许一个这样的客户消费。其他人继续尝试重新连接,直到当前消费者死亡。

于 2015-04-21T15:45:53.140 回答