我正在编写一个位于Kafka之上的集群应用程序 - 它使用Kafka专门用于进程间通信和协调。我可以使用Zookeeper来管理我的集群 - 但使用Kafka主题来管理集群并不是很困难。我想的越多,除了历史原因之外,似乎Kafka可以放弃Zookeeper并使用基于主题的解决方案
例如,在Kafka中可能会有一个特殊主题或主题,您可以在其中发布Zookeeper中当前保持跟踪的所有相同数据。经纪人,主题,分区,领导者等 - 似乎通过Kafka主题就像通过Zookeeper一样容易跟踪。
我知道在Kafka 0.9.0中,离Zookeeper有一些动作,更多的是朝向这个模型,记住我的问题不是关于Kafka的开发,或者更多的是我试图弄清楚我的应用程序的方向。
我不是在征求意见 - 我想知道的是,Zookeeper提供的任何特定功能在采用Kafka /基于主题的协调方法时会很困难。但我什么都想不到。
即使是心跳监控 - 这也是我开始关注Zookeeper的原因 - 您可以拥有客户端连接主题,客户端可以在加入群集时发布,以给定间隔发布心跳,并在他们离开时发布。
答案 0 :(得分:3)
让我们从一个太空眼睛的视角开始:你有两个分布式 存储数据的系统。 Zookeeper以某种形式在节点中组织它的数据 像结构的目录。 Kafka在主题中存储消息。
从鸟瞰角度来看,kafka是动物园管理员之一,具有高吞吐量和可扩展性 主要设计目标是一致性。 Zookeeper意味着成为一个分布式协调服务 分布式应用程序,而Kafka可以被认为是分布式提交日志。
所以你的问题的答案令人惊讶:'它取决于'。用于协调 一个分布式系统,我会使用zookeeper:多数民众赞成的东西。你可以 这也是用kafka做的,但有几件事情需要做 如果你正在使用zookeeper,那就是开箱即用的manualy。
一些例子:
关于你可以用zookeeper做些什么的非常好的概述是zookeeper-recipes:https://zookeeper.apache.org/doc/trunk/recipes.html
[编辑]:使用kafka的心跳应用当然是可能的。但是动物园管理员的短暂节点在我看来更容易。
答案 1 :(得分:0)
目前正在 KIP-500 范围内解决此问题。