这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战
Kafka 的 Broker 端参数配置在 config/server.properties
中,这些参数也被称为静态参数,修改了这些参数之后需要重启 Kafka 服务才能生效。与之不同的是 Topic 级别参数,Kafka 提供了专门的 kafka-configs 命令来修改它们。
Kafka 提供的 Broker 端配置项有 200 多个,这其中的大部分都不需要我们过多注意,这篇文章介绍一些常用到的 Broker 端 参数。
broker.id
这个参数用来描述当前的 Kafka Broker 在 Kafka 集群中的 id,在同一个集群中,每个 Broker 的 broker.id
不能重复,它的值是一个 int 类型的值。
如果没有设置这个值,Kafka 会自动生成一个。
log.dirs
这个参数非常重要。在 Kafka 的配置中,除了 log.dirs
还有一个 log.dir
参数。这两个参数可以指定 Broker 使用的文件目录的路径。从它们的名字可以看出,前者可以配置多个目录,而后者只能配置单一的路径。
实际上 log.dirs
比 log.dir
的优先级要高,因此,在实际使用的时候,我们只需要配置 log.dirs
就可以了。在配置文件中,默认的配置值是 /tmp/kafka-log
,如果需要配置多个路径,使用逗号隔开就可以了。
在生产环境中,最好将这里配置的多个目录挂在到多个物理磁盘上,既能提高吞吐量,又能提高系统的可用性。
zookeeper.connect
zookeeper.connect
是 Kafka 与 ZooKeeper 相关的最重要的参数,它指明了 Kafka 连接到 ZooKeeper 的集群地址,它的默认值是 zookeeper.connect=localhost:2181
,也就是 Kafka 社区版本自带的 ZooKeeper 的默认启动地址。
如果 ZooKeeper 集群有不止一个节点,则地址与地址之间用逗号隔开。
如果有多个 Kafka 集群,使用同一个 ZooKeeper 集群,则可以使用 chroot 配置地址,它的格式类似这样:zk1:2181,zk2:2181,zk3:2181/kafka
。
listeners
监听器,也就是提供给客户端连接到 Kafka 的连接方式,包括协议、主机名、开放的端口。配置的格式是:listeners = listener_name://host_name:port
。
Kafka 目前支持的协议有 PLAINTEXT、SSL、SASL_SSL 等,未开启安全认证的前提下,使用 PLAINTEXT 即可。
listeners = PLAINTEXT://your.host.name:9092
主机名的部分可以省略,如果为空的话,则会绑定到默认网卡。为了避免出现低级错误,这里最好不要省略,而且,在这里最好全部使用主机名,即 Broker 端和 Client 端应用配置中全部填写主机名。