同一主机中的 Kafka 生产者、消费者、经纪人?

Kafka Producer, Consumer, Broker in same host?

运行集群中所有节点使用相同的生产者和消费者代码有什么缺点吗?如果集群中有8个节点(8个消费者,8个kafka broker和8个生产者),那么集群中是否会同时存在8个生产者运行?有没有办法修改集群以便一次只有一个生产者运行?

Kafka 集群只不过是分布式共识下的 Kafka 代理 运行。 Kafka 集群不知道围绕它的生产者和消费者的数量 运行。生产者和消费者是 Kafka 集群的客户。生产者将数据流式传输到 Kafka,消费者使用来自 Kafka 的数据。在 Kafka 集群中,数据将分布在主题中。使用分区对主题进行分片。如果多个消费者属于同一个消费者组,消费者可以以自我修复的方式工作。

Is there a way to modify cluster so that only one producer runs at a time?

如果您打算 运行 某个时间点的单个生产者,则无需在集群内进行任何更改。

Are there any downsides to running the same producer and consumer code for all nodes in the cluster?

这里的主要缺点是可伸缩性和内存使用。

生产者和消费者不需要 运行 经纪人。生产者应该部署在生成数据的地方(或者 运行ning 作为单独的主机,比如 Kafka Connect workers)。

消费者应该根据下游系统所需的吞吐量和顺序保证独立扩展。

没有人说 8 个代理需要 8 个生产者和 8 个消费者;分区更重要

  • 如果你在一个主题中有 N 个分区,无论如何你只能扩展到 N 个活跃的消费者,以及无限多的生产者
  • 8 个代理可以为任何给定主题保留大量分区

运行 单个生产者是您自己代码的实现。经纪人不能强迫它。