Paa*_*aji 96 partitioning producer-consumer broker apache-kafka apache-zookeeper
在Kafka中,我想只使用单个代理,单个主题和一个具有一个生产者和多个消费者的分区(每个消费者从代理获得自己的数据副本).鉴于此,我不希望使用Zookeeper的开销; 我不能只使用经纪人吗?为什么动物园管理员必须?
Joh*_*one 105
是的,运行Kafka需要Zookeeper.从Kafka入门文档:
第2步:启动服务器
Kafka使用zookeeper,因此如果您还没有动物园管理员服务器,则需要先启动它.您可以使用与kafka一起打包的便捷脚本来获取快速且脏的单节点zookeeper实例.
至于为什么,很久以前人们发现你需要有一些方法来协调分布式系统中的任务,状态管理,配置等.一些项目已经构建了自己的机制(想想MongoDB分片集群中的配置服务器,或Elasticsearch集群中的主节点).其他人选择利用Zookeeper作为通用的分布式过程协调系统.所以Kafka,Storm,HBase,SolrCloud只是命名一些都使用Zookeeper来帮助管理和协调.
Kafka是一个分布式系统,用于使用Zookeeper.您没有使用Kafka的任何分布式功能这一事实并没有改变它的构建方式.无论如何,使用Zookeeper不应该有太多开销.更大的问题是为什么要使用这种特殊的设计模式--Kafka的单个代理实现错过了多代理集群的所有可靠性功能以及它的扩展能力.
Kev*_* Li 50
正如其他人所解释的那样,没有Zookeeper,Kafka(即使在最新版本中)也无法运行.
Kafka使用Zookeeper进行以下操作:
选择一个控制器.控制器是代理之一,负责维护所有分区的领导者/关注者关系.当节点关闭时,控制器会告诉其他副本成为分区负责人,以替换正在消失的节点上的分区负责人.Zookeeper用于选择控制器,确保只有一个控制器,如果它崩溃,则选择一个新控制器.
集群成员资格 - 哪些经纪人还活着并成为集群的一部分?这也是通过ZooKeeper管理的.
主题配置 - 存在哪些主题,每个分区有多少个分区,副本在哪里,谁是首选领导者,为每个主题设置了哪些配置覆盖
(0.9.0) - 配额 - 允许每个客户端读取和写入多少数据
(0.9.0) - ACL - 允许读取和写入哪个主题(旧的高级别消费者) - 存在哪些消费者组,谁是其成员以及每个组从每个分区获得的最新偏移量.
[来自https://www.quora.com/What-is-the-actual-role-of-ZooKeeper-in-Kafka/answer/Gwen-Shapira ]
关于您的场景,只有一个代理实例和一个具有多个消费者的生产者,您可以使用pusher创建一个渠道,并将事件推送到消费者可以订阅并传递这些事件的那个渠道. https://pusher.com/
Isk*_*der 41
2021 年 2 月更新
对于最新版本(2.7.0)来说,运行 Kafka仍然需要ZooKeeper ,但在不久的将来ZooKeeper 将被一个自我管理的元数据 Quorum 取代。
请参阅已接受的KIP-500中的详细信息。
一、现状
Kafka 使用 ZooKeeper 来存储有关分区和代理的元数据,并选择一个代理作为 Kafka 控制器。
目前,正在消除对 ZooKeeper 的这种依赖(通过KIP-500)。
2. 去除利润
删除 Apache ZooKeeper 依赖项提供了三个不同的好处:
3. 路线图
ZooKeeper 预计在 2021 年被移除,并且有一些里程碑,这些里程碑体现在以下 KIP 中:
| KIP | Name | Status | Fix Version/s |
|:-------:|:--------------------------------------------------------:|:----------------:|---------------|
| KIP-455 | Create an Administrative API for Replica Reassignment | Accepted | 2.6.0 |
| KIP-497 | Add inter-broker API to alter ISR | Accepted | 2.7.0 |
| KIP-543 | Expand ConfigCommand's non-ZK functionality | Accepted | 2.6.0 |
| KIP-555 | Deprecate Direct ZK access in Kafka Administrative Tools | Accepted | None |
| KIP-589 | Add API to update Replica state in Controller | Accepted | 2.8.0 |
| KIP-590 | Redirect Zookeeper Mutation Protocols to The Controller | Accepted | 2.8.0 |
| KIP-595 | A Raft Protocol for the Metadata Quorum | Accepted | None |
| KIP-631 | The Quorum-based Kafka Controller | Under discussion | None |
Run Code Online (Sandbox Code Playgroud)
KIP-500 引入了桥接版本的概念,可以与 KIP-500 之前和之后的 Kafka 版本共存。Bridge 版本很重要,因为它们可以实现对 ZooKeeper 后世界的零停机升级。
参考:
Kai*_*ner 18
重要更新-2019年8月:
ZooKeeper依赖关系将从Apache Kafka中删除。请参阅KIP-500中的高级讨论:用自我管理的元数据仲裁替换ZooKeeper。
这些工作将需要一些Kafka版本和其他KIP。Kafka控制器将接管当前的ZooKeeper任务。管制员将利用事件日志的好处,这是Kafka的核心概念。
新的Kafka架构的一些好处是更简单的架构,易于操作和更好的可伸缩性(例如,允许“无限分区”。
恕我直言,动物园管理员不是一个开销,但让你的生活更轻松.
它主要用于维护集群中不同节点之间的协调.Kafka最重要的事情之一是它使用zookeeper定期提交偏移量,以便在节点发生故障的情况下,它可以从先前提交的偏移量恢复(想象一下你自己处理所有这些).
Zookeeper还可以用于服务于许多其他目的,例如领导者检测,配置管理,同步,检测新节点何时加入或离开集群等.
未来的Kafka版本计划取消对zookeeper的依赖,但截至目前它已成为其中不可或缺的一部分.
以下是他们的常见问题解答页面中的几行:
一旦Zookeeper法定人数下降,经纪人可能会导致状态不佳,无法正常服务客户请求等.虽然当Zookeeper法定人数恢复时,卡夫卡经纪人应该能够自动恢复到正常状态,仍有一些极端情况他们不能,并且需要一个艰难的杀戮和恢复才能恢复正常.因此,建议密切监视您的zookeeper群集并对其进行配置,以使其具有高性能.
有关详细信息,请点击此处
Zookeeper 是任何类型的分布式系统的集中管理系统。分布式系统是运行在不同节点/集群(可能在地理上很远的位置)上但作为一个系统运行的不同软件模块。Zookeeper 促进节点之间的通信,在节点之间共享配置,它跟踪哪个节点是领导者,哪个节点加入/离开等等。 Zookeeper 是保持分布式系统健全并保持一致性的人。Zookeeper 基本上是一个编排平台。
Kafka 是一个分布式系统。因此,它需要对其可能在地理上很远(或不在)的节点进行某种编排。
Apache Kafka v2.8.0让您可以提前访问KIP-500,它消除了 Zookeeper 对 Kafka 的依赖,这意味着它不再需要 Apache Zookeeper。
相反,Kafka 现在可以在Kafka Raft 元数据模式( KRaft mode
) 下运行,从而启用内部 Raft 仲裁。当 Kafka 运行时,KRaft mode
其元数据不再存储在 ZooKeeper 上,而是存储在控制器节点的内部仲裁上。这意味着您甚至不再需要运行 ZooKeeper。
但请注意,v2.8.0 目前处于早期访问阶段,您暂时不应在生产中使用无 Zookeeper 的 Kafka。
删除 ZooKeeper 依赖并用内部仲裁替换它的一些好处:
KRaft mode
有关更多详细信息,您可以阅读文章Kafka 不再需要 ZooKeeper
归档时间: |
|
查看次数: |
77595 次 |
最近记录: |