引导服务器与kafka中的动物园管理员?
Posted
技术标签:
【中文标题】引导服务器与kafka中的动物园管理员?【英文标题】:Bootstrap server vs zookeeper in kafka? 【发布时间】:2018-02-20 17:12:03 【问题描述】:为什么不推荐在 kafka-consumer 中使用 zookeeper,为什么建议使用 bootstrap 服务器? bootstrap-server 的优点是什么?
【问题讨论】:
你在哪里看到的? 复制:***.com/questions/41774446/… 感谢您的快速回复。我已经咨询过这个话题,但我不明白引导服务器的优势。@Xire 【参考方案1】:Kafka消费者需要将偏移量提交给kafka并从kafka中获取偏移量。由于kafka将offset存储从zookeeper转移到kafka brokers,kafka消费者不需要直接和zookeeper通信,所以新的kafka消费者不需要配置zookeeper。
但是,kafka 消费者总是需要连接到 kafka 代理(集群)才能将请求发送到服务器,bootstrap-server 只是该集群的一些代理,使用它,消费者可以找到所有代理。
【讨论】:
无论新旧,客户都应该可以通过zk获取broker列表。--zookeeper
、--bootstrap-server
和--broker-list
混淆用户有什么好处吗?
@Leon 我觉得这是一个朝着消除动物园管理员方向发展的长期游戏。至于现在他们只是做了一些小步骤来实现它并消除依赖关系【参考方案2】:
在旧版本的 Kafka (0.9.0) 中,Kafka 用于在 Kafka 服务器上存储数据,所有与偏移量相关的信息(如当前分区偏移量)都存储在 zookeeper 中。因此,消费者要运行它需要数据和元数据。所以为了获取元数据,它必须调用zookeeper。这就是它同时使用 zookeeper 和 Kafka 的原因。前Old Consumer Code
在新版本的 Kafka(即 0.10.0 及更高版本)中,它将所有主题元数据信息(总分区及其当前偏移量)存储在同一 Kafka 服务器上的 __consumer_offset
主题中。所以现在只有 Kafka broker 需要和 zookeeper 通信
消费者从 Kafka 代理本身获取所有数据和元数据,因此它现在不再需要与 Zookeeper 通信。
当前架构的优势:数据和元数据在同一个地方更容易管理。
【讨论】:
【参考方案3】:在当前使用--zookeeper 或--bootstrap-server 参数的kafka-consumer 工具中区分使用新旧消费者。旧的消费者需要 Zookeeper 连接,因为偏移量保存在那里。新的消费者不再需要 Zookeeper,因为偏移量保存在 Kafka 代理上的 __consumer_offset 主题中。今天不鼓励使用旧的消费者,因此对于新应用程序,最好使用新的实现。
【讨论】:
什么是“新老消费者”?您是在谈论不同版本的 Kafka 中的消费者吗? 是的,“新”消费者是以这种方式命名的,从 0.9.0 版本开始,消费者在 kafka 主题中存储偏移量,而不是在 zookeeper 中。以上是关于引导服务器与kafka中的动物园管理员?的主要内容,如果未能解决你的问题,请参考以下文章