首页 文章

Kafka而不是Zookeeper进行集群管理

提问于
浏览
2

我正在编写一个位于Kafka之上的集群应用程序 - 它使用Kafka专门用于进程间通信和协调 . 我可以使用Zookeeper来管理我的集群 - 但使用Kafka主题来管理集群并不是很困难 . 我想的越多,除了历史原因之外,似乎Kafka可以放弃Zookeeper而只是使用基于主题的解决方案

例如,在Kafka中可能会有一个特殊主题或主题,您可以在其中发布Zookeeper中当前保持跟踪的所有相同数据 . 经纪人,主题,分区,领导者等 - 看起来像通过Kafka主题一样容易跟踪通过Zookeeper .

我知道在Kafka 0.9.0中有一些远离Zookeeper的动作,更多的是朝向这个模型,并且记住我的问题不是关于Kafka开发或更多我试图找出我的应用程序中的方向 .

我不是在征求意见 - 我想知道的是,Zookeeper提供的任何特定功能对于基于Kafka /主题的协调方法来说都很困难 . 但我什么都想不到 .

即使是心跳监控 - 这也是我开始关注Zookeeper的原因 - 您可以拥有客户端连接主题,客户端可以在加入群集时发布,以给定间隔发布心跳,并发布为他们离开了 .

1 回答

  • 3

    让我们从一个空间眼睛视图开始:你有两个存储数据的分布式系统 . Zookeeper将其数据组织在某种目录中的节点中,如结构 . Kafka在主题中存储消息 .

    从鸟瞰角度来看,kafka是为高吞吐量和可扩展性而构建的,而动物园管理员的主要设计目标之一是一致性 . Zookeeper是分布式应用程序的分布式协调服务,而Kafka可以被认为是分布式提交日志 .

    所以你的问题的答案令人惊讶:'这取决于' . 为了协调分布式系统,我会使用zookeeper:那就是它的构建内容 . 你也可以用kafka做到这一点,但如果你使用的是zookeeper,有很多东西需要手工制作 .

    一些例子:

    • 一致性:ZK-Client可以选择是否需要strong or a eventual consistency

    • 短暂的节点:与ZK-Watches一起,对失败的服务做出反应是一件好事

    • 顺序一致性:仅's not granted that you recieve the kafka-message in the order you wrote it to the broker (it'被授予订购中的消息的订购)

    • ACLs:从未使用它,但它至少是kafka开箱即用的东西

    • 序列节点

    关于你可以用zookeeper做什么的一个非常好的概述是zookeeper-recipes:https://zookeeper.apache.org/doc/trunk/recipes.html

    [编辑]:使用kafka的心跳应用当然是可能的 . 但是动物园管理员的短暂节点在我看来更容易 .

相关问题