Apache kafka Kafka是否使用反向代理与负载平衡器一起工作?

Apache kafka Kafka是否使用反向代理与负载平衡器一起工作?,apache-kafka,load-balancing,Apache Kafka,Load Balancing,最近,我在Kafka(ie.)前面发现了一些使用反向代理负载平衡器的文章/项目 直到今天,我还认为我很了解Kafka的原则和体系结构,因为我认为Kafka使用客户端平衡和一致散列,因此每个客户端都知道哪个分区是在哪个代理上掌握的,并直接与相应的代理进行通信。Kafka甚至有通知生产者和消费者重新分区和其他拓扑更改的协议,所以我真的认为Kafka应该在没有任何负载平衡器的情况下使用。当我们在操作过程中遇到问题时,接收到关于生成无效代理/分区的异常,这已经向我证明了这一点 那么,在卡夫卡面前的那些代

最近,我在Kafka(ie.)前面发现了一些使用反向代理负载平衡器的文章/项目

直到今天,我还认为我很了解Kafka的原则和体系结构,因为我认为Kafka使用客户端平衡和一致散列,因此每个客户端都知道哪个分区是在哪个代理上掌握的,并直接与相应的代理进行通信。Kafka甚至有通知生产者和消费者重新分区和其他拓扑更改的协议,所以我真的认为Kafka应该在没有任何负载平衡器的情况下使用。当我们在操作过程中遇到问题时,接收到关于生成无效代理/分区的异常,这已经向我证明了这一点


那么,在卡夫卡面前的那些代理和负载平衡器是什么意思呢?

你没有错!你在那里提到的所有事情都是正确的

如果我们谈论的是“经典”负载平衡器,您需要满足以下2个条件才能将其与Kafka一起使用:

  • 负载平衡器处于TCP级别(不能将L6或L7负载平衡器与Kafka一起使用)
  • 每个Kafka代理一个负载平衡器(正如您所提到的,客户机直接连接到与之有业务往来的代理)
  • 您提到的文章可能与(包括万岁)有某种关联

    我不知道内部细节,但我想我可以做个总结。动态路由的主要挑战是Kafka协议,它是一种TCP级协议。因此,我们不能像在更高级别的协议(例如:HTTP)中那样访问元数据,因此我们可以正确地路由通信

    特使制定了一个允许这样做的计划。当客户端连接到代理时,代理可以解码Kafka协议,并且它知道“好的,那么您想连接到x broker,让我为您这样做”