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