Kafka基本使用

Posted by 淦 Blog on December 10, 2025

集群参数配置

Broker 端参数

  • log.dirs:指定了 Broker 需要使用的若干个文件目录路径。这个参数没有默认值,必须亲自指定。
  • log.dir:注意这是 dir,结尾没有 s,说明它只能表示单个路径,它是补充上一个参数。

在线上生产环境中一定要为log.dirs配置多个路径,保证这些目录挂载到不同的物理磁盘上。这样做有两个好处:

  1. 提升读写性能:比起单块磁盘,多块物理磁盘同时读写数据有更高的吞吐量。
  2. 能够实现故障转移:即 Failover。

ZooKeeper 相关的设置

  • zookeeper.connect

Broker 连接

  • listeners:监听器,告诉外部连接者要通过什么协议访问指定主机名和端口开放的 Kafka 服务。
  • advertised.listeners:这组监听器是 Broker 用于对外发布。
  • listener.security.protocol.map:当自定义协议名称时,底层使用了哪种安全协议。

注意:主机名这个设置最好全部使用主机名,而非IP 地址,即 Broker 端和 Client 端应用配置中全部填写主机名。

Topic 管理

  • auto.create.topics.enable:是否允许自动创建Topic。建议最好设置成 false,即不允许自动创建 Topic。每个部门被分配的 Topic 应该由运维严格把控,决不能允许自行创建任何 Topic。
  • unclean.leader.election.enable:是否允许 Unclean Leader 选举。即副本是否都有资格竞争 Leader。把它设置成 false,避免落后进度太多的副本进行选举。
  • auto.leader.rebalance.enable:是否允许定期进行 Leader 选举。换 Leader 本质上没有任何性能收益,设置成 false。

数据留存

  • log.retention.{hour minutes ms}:控制一条消息数据被保存多长时间。从优先级上来说 ms 设置最高、minutes 次之、hour 最低。
  • log.retention.bytes:指定 Broker 为消息保存的总磁盘容量大小。
  • message.max.bytes:控制 Broker 能够接收的最大消息大小。