引导服务器与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中的动物园管理员?的主要内容,如果未能解决你的问题,请参考以下文章

Kafka 出现错误在引导服务器中没有给出可解析的引导 URL

CentOS 7 引导过程与服务管理简介

Linux系统管理09——引导过程与服务控制

一起走进动物园管理员——ZooKeeper

一起走进动物园管理员——ZooKeeper

假如大数据组件中的动物都变成神奇宝贝,那会变成什么样?(大数据的组件动漫化)