我可以在三台不同的机器上安装生产者、经纪人和消费者吗?

Can I install producer, broker and consumer on three different machines?

我对kafka很陌生。我有以下架构:

1) 2 servers runing application logics and database, can I write kafka producer on these servers wrapped with docker container ?

2) 1 server reserved for kafka broker and zookeeper

3) 1 sever reserved for kafka comsumer

我对

感到困惑
1) whether I can run kafka producer, broker and consumer on separate machines ? 

2) How can they communicate ? 

3)Then do I have to install kafka tarball everywhere producer/consumer/broker are running ?
  1. 是的,您可以 运行 生产者、经纪人和消费者在不同的机器上。
  2. 生产者只与经纪人沟通,消费者只与经纪人沟通。也就是说,经纪人是生产者和消费者之间的中介(因此得名 "broker")。生产者、消费者和代理之间的通信通常通过 Kafka Java 或 Scala API 进行。但是,也有其他语言的本地客户端,例如 C/C++ (librdkafka) as well as an HTTP/REST API (Confluent kafka-rest, see docs).
  3. 必须在代理上安装 Kafka tarball。您是否还需要生产者 and/or 消费者上的 Kafka tarball 取决于您是否使用任何包含的 producer/consumer 应用程序,例如 Kafka 的控制台消费者。根据我的经验,大多数用户使用 Kafka 的 Java/Scala API 编写自己的生产者 and/or 消费者应用程序,然后将他们的自定义应用程序部署到所需的机器上。在后一种情况下,您不需要在这些机器上也安装 Kafka tarball(即 运行 producer/consumer 应用程序的机器)。