首页 文章

动物园管理员是 Kafka 必须的吗?

提问于
浏览
70

在Kafka中,我想只使用一个代理,单个主题和一个具有一个 生产环境 者和多个消费者的分区(每个消费者从代理获得自己的数据副本) . 鉴于此,我不想要使用Zookeeper的开销;我不能只使用经纪人吗?为什么动物园管理员必须?

5 回答

  • 35

    是的,运行Kafka需要Zookeeper . 从Kafka入门文档:

    步骤2:启动服务器Kafka使用zookeeper,因此如果您还没有动物园管理员服务器,则需要先启动它 . 您可以使用与kafka一起打包的便捷脚本来获得快速且脏的单节点zookeeper实例 .

    至于为什么,很久以前人们发现你需要有一些方法来协调分布式系统中的任务,状态管理,配置等 . 一些项目已经构建了自己的机制(想想MongoDB分片集群中的配置服务器,或Elasticsearch集群中的主节点) . 其他人选择利用Zookeeper作为通用的分布式过程协调系统 . 所以Kafka,Storm,HBase,SolrCloud仅举几个名称都使用Zookeeper来帮助管理和协调 .

    Kafka是一个分布式系统,可以使用Zookeeper . 您没有使用Kafka的任何分布式功能这一事实并没有改变它的构建方式 . 无论如何,使用Zookeeper不应该有太多开销 . 更大的问题是为什么要使用这种特殊的设计模式 - Kafka的单个代理实现错过了多代理群集的所有可靠性功能以及它的扩展能力 .

  • 1

    正如其他人所解释的那样,没有Zookeeper,Kafka(即使在最新版本中)也无法工作 .

    Kafka使用Zookeeper进行以下操作:

    Electing a controller . 控制器是代理之一,负责维护所有分区的领导者/关注者关系 . 当节点关闭时,控制器会告诉其他副本成为分区负责人,以替换正在消失的节点上的分区负责人 . Zookeeper用于选择控制器,确保只有一个控制器,如果它崩溃,则选择一个新控制器 .

    Cluster membership - 哪些经纪人还活着并成为集群的一部分?这也是通过ZooKeeper管理的 .

    Topic configuration - 存在哪些主题,每个分区有多少个分区,副本在哪里,谁是首选领导者,为每个主题设置了哪些配置覆盖

    (0.9.0) - Quotas - 允许每个客户端读取和写入多少数据

    (0.9.0) - ACLs - 允许谁读取和写入哪个主题(旧的高级别消费者) - 存在哪些消费者组,谁是他们的成员以及每个组从每个分区获得的最新偏移量 .

    [来自https://www.quora.com/What-is-the-actual-role-of-ZooKeeper-in-Kafka/answer/Gwen-Shapira]

    关于您的场景,只有一个代理实例和一个具有多个消费者的 生产环境 者,您可以使用pusher创建一个 Channels ,并将事件推送到消费者可以订阅并传递这些事件的那个 Channels . https://pusher.com/

  • 5

    Kafka是为了使用Zookeeper而构建的 . 没有逃避这一点 .

    Kafka是一个分布式系统,使用Zookeeper跟踪kafka集群节点的状态 . 它还跟踪Kafka主题,分区等 .

    看看你的问题,似乎你不需要 Kafka . 您可以使用任何支持pub-sub的应用程序,例如Redis,Rabbit MQ或托管解决方案,例如Pub-nub .

  • 85

    恕我直言动物园管理员不是一个开销,但让你的生活更轻松 .

    它主要用于维护集群中不同节点之间的协调 . Kafka最重要的事情之一是它使用zookeeper定期提交偏移量,以便在节点发生故障的情况下,它可以从先前提交的偏移量恢复(想象一下你自己处理所有这些) .

    Zookeeper还可以用于服务于许多其他目的,例如领导者检测,配置管理,同步,检测新节点何时加入或离开集群等 .

    未来的Kafka版本计划取消对zookeeper的依赖,但截至目前它已成为其中不可或缺的一部分 .

    以下是他们的常见问题解答页面中的几行:

    一旦Zookeeper法定人数下降,经纪人可能会导致状态不佳而无法正常服务客户请求等 . 虽然当Zookeeper法定人数恢复时, Kafka 经纪人应该能够自动恢复到正常状态,还有一些角落他们做不到的情况,需要一个艰难的杀戮和恢复才能恢复正常 . 因此,建议密切监视您的zookeeper群集并进行配置,以使其具有高效性 .

    有关详细信息,请查看here

  • 9

    除了通常的有效载荷消息传输之外,还有许多其他通信在kafka中发生 . like 与请求集群成员资格的经纪人相关的事件与经纪人相关的事件变得可用*获取引导程序配置设置 . *与控制器相关的事件和领导者更新 . *帮助状态更新,如Heartbeat更新 .

    Zookeeper本身是一个分布式系统,由一个集合中的多个节点组成 . Zookeeper是用于维护此类元数据的集中服务 .

相关问题