在 Kafka 中,我只想使用单个代理、单个主题和单个分区,该分区具有一个生产者和多个消费者(每个消费者从代理获取自己的数据副本)。鉴于此,我不想要使用 Zookeeper 的开销;我不能只使用经纪人吗?为什么动物园管理员是必须的?
请您参考如下方法:
是的,运行 Kafka 需要 Zookeeper。来自 Kafka 入门文档:
Step 2: Start the server
Kafka uses zookeeper so you need to first start a zookeeper server if you don't already have one. You can use the convenience script packaged with kafka to get a quick-and-dirty single-node zookeeper instance.
至于原因,人们很久以前就发现,您需要某种方法来协调分布式系统中的任务、状态管理、配置等。有些项目已经构建了自己的机制(想想 MongoDB 分片集群中的配置服务器,或者 Elasticsearch 集群中的主节点)。其他人选择利用 Zookeeper 作为通用分布式进程协调系统。因此,Kafka、Storm、HBase、SolrCloud 等都使用 Zookeeper 来帮助管理和协调。
Kafka是一个分布式系统,是为使用Zookeeper而构建的。您没有使用 Kafka 的任何分布式功能这一事实并不会改变它的构建方式。无论如何,使用 Zookeeper 不会产生太多开销。一个更大的问题是为什么要使用这种特定的设计模式——Kafka 的单个代理实现错过了多代理集群的所有可靠性功能及其扩展能力。