第6章Broker-2

2022-05-18  本文已影响0人  loinue

2 zookeeper的角色
zookeeper是broker如何工作的一个关键组件,目前也是成功运行kafka的一个要求。在broker启动的时候,zookeeper需要先启动。注意后期kafka版本是可以不依赖kafka的,应该是2.8.0开始。
由于zk需要有一个最小数字才能选举出leader并做出决定,这个zk集群对我们的broker确实很重要。zk本身包含我们kafka集群中的主题等信息。zk通过协调任务和通知来助力broker。如果ZooKeeper实例损坏,主题元数据和配置可能会丢失。
通常,我们不需要将ZooKeeper集群的详细信息(IP地址和端口)开放给生产者和消费者应用程序。某些旧框架也有提供将客户端与ZooKeeper集群连接起来的方式,比如3.1.x版本的Spring Cloud Stream,它允许我们设置zkNodes属性。该值默认为本地主机,且在大多数情况下应该单独保留以避免ZooKeeper依赖。zkNodes属性被标记为已弃用,但是您永远不知道是否会遇到以前的旧代码,因此您需要密切关注它。为什么现在和将来都不需要这个呢?除了Kafka并不总是需要zk之外,我们在应用程序中避免不必要的外部依赖也很重要。此外,如果我们使用Kafka和客户端直接通信,则需要更少的端口。
使用Kafka工具zookeeper-shell.sh,它位于我们Kafka安装的bin文件夹中,我们可以连接到集群中的ZooKeeper主机,并查看数据是如何存储的。kafka使用的路径可以去ZkData.scala文件中查阅。
在这个文件中,您可以找到诸如/controller、/controller_epoch、/config和/brokers等路径。如果我们查看/brokers/topics路径,我们将看到一个我们已经创建的主题列表。在这一点上,我们希望至少在列表中包含kinaction_helloworld(之前章节已经创建过的)主题。

bin/zookeeper-shell.sh localhost:2181

备注:这个我还真的才知道。就是直接在bin目录下就有zk的客户端的了。不用自己去找zk客户端。zk退出客户端的命令是:quit

上一篇下一篇

猜你喜欢

热点阅读