Broker 基础配置
-
broker.id
:- 每个 Kafka 节点的唯一标识。
- 例如:
broker.id=0
,多个节点需设置为不同值。
-
log.dirs
:- 指定日志数据存储的路径。
- 示例:
log.dirs=/data0/log,/data1/log
。 - 建议将不同路径挂载到不同的物理硬盘以提升并发写入能力。
-
zookeeper.connect
:- 设置 Kafka 集群使用的 Zookeeper 集群地址。
- 示例:
zookeeper.connect=host1:2181,host2:2181,host3:2181
。
-
listeners
:- 指定客户端访问 Kafka 的监听地址和端口。
- 示例:
listeners=PLAINTEXT://0.0.0.0:9092
。
-
delete.topic.enable
:- 是否允许删除 Topic,默认
true
。
- 是否允许删除 Topic,默认
日志与数据清理
-
log.retention.hours
:- 数据保留时间,默认 168 小时(7 天)。
- 示例:设置为 12 小时:
log.retention.hours=12
。
-
log.retention.bytes
:- 单个分区的最大数据量,超过后会自动清理。
- 默认值为
-1
,即不根据大小清理。
性能优化
-
线程配置:
num.network.threads=3
:处理网络请求的线程数量。num.io.threads=8
:处理实际 I/O 操作的线程数量。- 在高负载环境下,可增加这些线程数。
-
消息大小:
message.max.bytes=10485760
:Broker 接受的最大消息大小(默认约 1 MB,可设为 10 MB)。
数据同步与可靠性
-
min.insync.replicas
:- 定义 ISR(同步副本列表)中至少有多少副本需要同步。
- 示例:
min.insync.replicas=2
。 - 当
request.required.acks=-1
时,该参数能提供数据可靠性的保障。
-
request.required.acks
:-
Producer 的数据确认级别:
acks=0
:无需等待确认,效率高但数据可靠性最低。acks=1
:Leader 写入成功后返回,可能丢数据。acks=-1
:需要所有 ISR 副本确认,可靠性最高。
-