将客户端从负载均衡器重定向到 Kafka 中的正确消费者

Redirecting client from load balancer to right consumer in Kafka

我正在做一个个人项目,我希望能够从生产者向最终用户发送一条消息。 每条消息都有一个密钥,用于标识必须接收消息的用户。
这是我想象的整体结构:

我无法弄清楚如何告诉负载均衡器,例如每当具有密钥 2 的用户联系负载均衡器时,我们必须与处理分区的消费者建立连接(可能使用 WebSocket)其中的关键 2。可能可以通过使用 Kafka 在必须为密钥分配分区时使用的相同技术,或者通过跟踪每个消费者管理的密钥来完成某些事情。

我不知道这是否可能,但即使可能,我描述的技术可能会使代码与架构过于耦合。

你能帮我看看我该如何实现吗?我不想将消息存储在远程数据存储上并从随机消费者那里检索它们。我希望消费者能够在与其建立连接时尽快为用户提供服务。如果与该用户没有连接,那么我可以存储消息并在连接就绪时发送它。

我最终发现他们在 Netflix 使用的 Push Messaging 技术很有用。诀窍是添加另一个间接级别,由 Web 服务器组成。每当新客户端连接到其中一个 Web 服务器时,元组 就会保存在外部数据存储中。当消费者需要将消息发送到具有该特定密钥的客户端时,它会在外部注册表中查找以查找客户端连接的位置。一旦找到它,它就会将消息发送到正确的 Web 服务器,该服务器会将消息推送到客户端。