Kafka的主要配置文件是server.properties
,它包含了Kafka服务器的各种配置项。以下是一些关键配置项的解读:
-
broker.id:这是Kafka Broker的唯一标识符,即使在Broker的IP地址发生变化时,只要
broker.id
不变,就不会影响消费者的消息处理。 -
delete.topic.enable:这个配置项决定是否允许删除Topic。如果设置为
false
,即使使用管理员工具删除Topic,Kafka也不会处理此操作。 -
auto.create.topics.enable:这个配置项决定是否允许Kafka服务端根据请求自动创建Topic。建议将此选项设置为
false
,并在使用Topic之前手动创建。 -
listeners:这个配置项定义了Kafka Server使用的协议、主机名以及端口的格式。例如,
listeners=PLAINTEXT://your.host.name:9092
表示Kafka使用PLAINTEXT协议监听在9092端口。 -
num.network.threads和num.io.threads:这两个配置项分别定义了接收请求的线程数和执行请求的线程数。
-
socket.send.buffer.bytes和socket.receive.buffer.bytes:这两个配置项分别定义了发送套接字的缓冲区大小和接收套接字的缓冲区大小。
-
log.dirs:这个配置项定义了用于存储日志文件的目录列表。
-
num.partitions:这个配置项定义了每个Topic默认的分区数量。
-
num.recovery.threads.per.data.dir:这个配置项定义了用于恢复日志文件以及关闭时将日志数据刷新到磁盘的线程数量。
-
log.flush.interval.messages和log.flush.interval.ms:这两个配置项分别定义了每隔多少个消息触发一次刷新操作,将内存中的消息刷新到硬盘上,以及每隔多少毫秒触发一次刷新操作。
-
log.retention.hours和log.retention.bytes:这两个配置项分别定义了日志文件保留的时间(以小时为单位)和日志文件保留的字节数。
-
log.roll.hours和log.segment.bytes:这两个配置项定义了滚动生成新的segment文件的时间(以小时为单位)和每个segment文件的大小(默认为1GB)。
-
zookeeper.connect:这个配置项定义了Zookeeper连接地址,Kafka需要与Zookeeper建立长连接通信。
-
** advertised.listeners**:这个配置项定义了Kafka Broker对外暴露的地址和端口,用于和生产者/消费者客户端进行通信。
请注意,修改Kafka配置文件后,通常需要重启Kafka服务才能使配置生效。在进行任何配置更改之前,建议备份原始配置文件,并谨慎修改配置参数,以避免不必要的服务中断或性能问题