Kafka 核心配置

30 阅读1分钟

Broker 基础配置

  1. broker.id

    • 每个 Kafka 节点的唯一标识。
    • 例如:broker.id=0,多个节点需设置为不同值。
  2. log.dirs

    • 指定日志数据存储的路径。
    • 示例:log.dirs=/data0/log,/data1/log
    • 建议将不同路径挂载到不同的物理硬盘以提升并发写入能力。
  3. zookeeper.connect

    • 设置 Kafka 集群使用的 Zookeeper 集群地址。
    • 示例:zookeeper.connect=host1:2181,host2:2181,host3:2181
  4. listeners

    • 指定客户端访问 Kafka 的监听地址和端口。
    • 示例:listeners=PLAINTEXT://0.0.0.0:9092
  5. delete.topic.enable

    • 是否允许删除 Topic,默认 true

日志与数据清理

  1. log.retention.hours

    • 数据保留时间,默认 168 小时(7 天)。
    • 示例:设置为 12 小时:log.retention.hours=12
  2. log.retention.bytes

    • 单个分区的最大数据量,超过后会自动清理。
    • 默认值为 -1,即不根据大小清理。

性能优化

  1. 线程配置

    • num.network.threads=3:处理网络请求的线程数量。
    • num.io.threads=8:处理实际 I/O 操作的线程数量。
    • 在高负载环境下,可增加这些线程数。
  2. 消息大小

    • message.max.bytes=10485760:Broker 接受的最大消息大小(默认约 1 MB,可设为 10 MB)。

数据同步与可靠性

  1. min.insync.replicas

    • 定义 ISR(同步副本列表)中至少有多少副本需要同步。
    • 示例:min.insync.replicas=2
    • request.required.acks=-1 时,该参数能提供数据可靠性的保障。
  2. request.required.acks

    • Producer 的数据确认级别:

      • acks=0:无需等待确认,效率高但数据可靠性最低。
      • acks=1:Leader 写入成功后返回,可能丢数据。
      • acks=-1:需要所有 ISR 副本确认,可靠性最高。