我正在编写一个基于Kafka的集群应用程序--它专门使用Kafka进行进程间通信和协调。我可以使用Zookeeper来管理我的集群--但是使用Kafka主题来管理集群并不是很困难。我想得越多,除了出于历史原因,卡夫卡似乎可以放弃Zookeeper,只使用基于主题的解决方案
例如,在Kafka中可能会有一个或多个特殊主题,您可以在其中发布当前在Zookeeper中跟踪的所有相同数据。Broker、Topics、Partitions、Leaders等--似乎可以通过Kafka主题像通过Zookeeper一样轻松地跟踪这些内容。
我知道在Kafka 0.9.0中有一些远离Zookeeper的动向,更多的是朝着这个模式发展,记住我的问题不是关于Kafka开发,而是更多的是我试图弄清楚我的应用程序的发展方向。
我不是在征求意见--我想知道的是,Zookeeper提供的任何特定功能对于Kafka/基于主题的协调方法来说都是困难的。但我什么也想不出来。
甚至心跳监视--这也是我最初开始研究Zookeeper的原因--您可以有一个客户端连接主题,客户端可以在加入集群时发布它,在给定的时间间隔发布心跳,并在离开集群时发布。
发布于 2016-03-09 01:58:35
让我们从一个着眼于太空的观点开始:你有两个存储数据的分布式系统。Zookeeper以某种类似目录的结构在节点中组织它的数据。Kafka在主题中存储消息。
从鸟瞰的角度来看,kafka是为高吞吐量和可伸缩性而构建的,而动物园管理员的主要设计目标之一是一致性。Zookeeper是用于分布式应用的分布式协调服务,而Kafka可以被认为是分布式提交日志。
所以你的问题的答案是令人惊讶的:“视情况而定”。为了协调分布式系统,我会使用zookeeper:这就是构建它的目的。你也可以用kafka来做这件事,但是如果你使用的是zookeeper,有几件事情需要手动完成。
下面是一些例子:
没有提供的
关于你可以用zookeeper做什么的一个很好的概述是zookeeper-食谱:https://zookeeper.apache.org/doc/trunk/recipes.html
编辑:使用kafka对应用程序进行检测当然是可能的。但在我看来,zookeeper中的临时节点是更容易的选择。
发布于 2021-07-21 21:57:21
这目前正在KIP-500的范围内工作。
https://stackoverflow.com/questions/35869786
复制相似问题