ste*_*ane 5 websocket apache-kafka spring-kafka
我想找出将消息从 Kafka 路由到连接到负载平衡应用程序服务器集群的 Web 套接字客户端的最佳方法。我知道 spring-kafka 有助于消费消息并将消息发布到 kafka 主题,但是当连接到分布式 kafka 主题时,它在负载均衡应用程序服务器场景中如何工作。以下是我想要满足的要求,总体目标是在具有非常非常大的用户量的应用程序中促进点对点消息传递:
我可以看到如何在单个应用程序服务器场景中轻松实现这一点,其中消费者使用来自 kafka 主题的所有消息并通过 spring 消息传递/websockets 重新分发。但我无法弄清楚这在负载平衡的应用程序服务器场景中如何工作,其中每个应用程序服务器上都有消费者形成 kafka 主题的整体消费者组。假设每个应用程序服务器都在使用 kafka 主题的子集/分区,它们如何知道其预期接收者连接到哪个服务器?即使他们知道收件人连接到哪个服务器,他们将如何通过 Websocket 将消息路由给他们?
我认为应用程序服务器负载平衡可以通过将具有特定路由键(以“A”等开头的用户)的用户记录到特定应用程序服务器上来工作,然后仅在该应用程序服务器上消费以“A”开头的用户的消息。但这似乎很难维护,并且会使自动缩放变得非常困难。这似乎应该是一个常见的实施场景,但我找不到任何适合这种场景的工具或方法。
听起来每个消费者都应该生活在自己的消费群体中。这样,所有可用的消费者都将消费发送到该主题的所有消息。因此,所有连接的 websocket 客户端都将收到这些消息的通知。
如果您在使用这些消息后需要更复杂的逻辑,例如过滤、路由、转换、聚合等,您应该考虑在您的项目中使用 Spring Integration:https: //spring.io/projects/spring-integration
归档时间: |
|
查看次数: |
2210 次 |
最近记录: |