Apache Kafka 3.6 的 server.properties 文件包含了许多配置选项,用于定义Kafka broker的行为。以下是一些主要的配置项及其详细解释:

  1. broker.id
  • 唯一标识一个Kafka broker的数字或字符串。在一个Kafka集群中,每个broker的ID都必须是唯一的。如果未设置,则会生成一个唯一的UUID。
  • 例如:broker.id=0
  1. listeners
  • 用于定义broker监听的地址和端口。可以设置多个监听器,以逗号分隔。
  • 例如:listeners=PLAINTEXT://:9092
  1. advertised.listeners
  • 用于发布到ZooKeeper供客户端使用的监听器地址。如果不设置,则使用listeners的值。这对于在Docker、云环境或具有复杂网络拓扑的环境中运行Kafka特别有用。
  1. num.network.threads
  • 处理网络请求的线程数。增加此值可以增加broker处理并发网络请求的能力。
  • 例如:num.network.threads=3
  1. num.io.threads
  • 处理磁盘I/O的线程数。增加此值可以增加broker处理磁盘I/O的能力。
  • 例如:num.io.threads=8
  1. socket.send.buffer.bytes 和 socket.receive.buffer.bytes
  • 用于设置TCP发送和接收缓冲区的大小。这些值可以根据网络条件和需求进行调整。
  1. log.dirs
  • 用于存储Kafka日志的目录列表。可以指定多个目录,以逗号分隔。Kafka会将这些目录视为一个统一的日志存储空间。
  • 例如:log.dirs=/tmp/kafka-logs
  1. num.partitions
  • 创建新主题时的默认分区数。此设置不影响已存在的主题。
  • 例如:num.partitions=1
  1. default.replication.factor
  • 创建新主题时的默认副本因子。副本因子决定了主题分区的副本数量。此设置不影响已存在的主题。
  • 例如:default.replication.factor=1
  1. log.retention.hourslog.retention.bytes 和 log.retention.minutes
  • 这些设置用于控制日志的保留策略。可以根据时间、大小或两者之一来配置日志的保留期限。当达到任一限制时,旧的日志数据将被删除。
  1. zookeeper.connect
  • 用于连接到ZooKeeper集群的字符串。可以指定多个ZooKeeper地址,以逗号分隔。Kafka使用ZooKeeper来存储集群的元数据和其他重要信息。
  • 例如:zookeeper.connect=localhost:2181
  • 注意:在新版本的Kafka中,推荐使用更具体的配置参数(如zookeeper.connect.timeout.ms)来替代此参数的一些功能。
  1. auto.create.topics.enable
  • 是否允许自动创建主题。如果设置为true,当客户端向不存在的主题发送消息时,Kafka会自动创建该主题。如果设置为false,则需要手动创建主题。
  • 例如:auto.create.topics.enable=true
  1. delete.topic.enable
  • 是否允许删除主题。如果设置为true,则可以通过管理工具或API删除主题。如果设置为false,则禁止删除主题。
  • 例如:delete.topic.enable=true
  1. compression.type
  • 用于设置Kafka消息的默认压缩类型。可用的选项包括“none”、“gzip”、“snappy”和“lz4”。压缩可以减少网络传输和存储空间的占用,但可能会增加CPU的使用率。
  • 例如:compression.type=snappy

这只是server.properties文件中的一部分配置项。实际上,Kafka提供了许多其他配置选项,以满足各种部署场景和需求。要获取完整的配置列表和详细信息,请参阅Kafka的官方文档。

需要注意的是,这里提供的配置和解释是基于Kafka 3.6版本的通用指导。在实际部署中,应根据具体的硬件、网络条件和业务需求进行适当的调整和优化。