以下是Linux Kafka配置中关键参数,分服务端和客户端两类说明:
一、服务端(Broker)关键参数
broker.id- 集群中唯一标识,需为整数且各节点唯一,用于区分不同Broker。
listeners/advertised.listenerslisteners:Broker监听的地址和端口(如PLAINTEXT://0.0.0.0:9092)。advertised.listeners:客户端实际连接地址,需配置为可访问的IP和端口,支持多协议(如SSL、SASL)。
log.dirs- 消息存储目录,建议配置多个路径(逗号分隔)并挂载到不同磁盘,提升I/O性能。
num.network.threads/num.io.threadsnum.network.threads:处理网络请求的线程数,建议设置为CPU核心数。num.io.threads:处理磁盘I/O的线程数,建议设置为CPU核心数×2。
log.retention.hours/log.retention.bytes- 控制消息保留策略,
log.retention.hours默认168小时(7天),log.retention.bytes可限制单个分区日志大小。
- 控制消息保留策略,
default.replication.factor- 新建Topic的默认副本数,集群环境下建议设置为节点数,确保高可用。
zookeeper.connect- ZooKeeper集群地址,用于元数据管理和集群协调。
二、客户端(生产/消费者)关键参数
生产者(Producer)
bootstrap.servers- Kafka集群地址,用于建立初始连接。
acks- 消息确认机制:
0(不等待确认,吞吐量高但可能丢消息)、1(仅Leader确认)、all(所有副本确认,最可靠)。
- 消息确认机制:
batch.size/linger.msbatch.size:批次大小(字节),默认16KB,增大可提升吞吐量。linger.ms:等待批次填满的时间(毫秒),默认0,增大可减少请求频率。
retries/enable.idempotenceretries:失败重试次数,默认0,建议设置为>0并配合enable.idempotence=true避免重复消息。enable.idempotence:是否启用幂等性,确保消息不重复(需配合acks=all)。
消费者(Consumer)
bootstrap.servers- 集群地址,用于发现Broker。
group.id- 消费者组ID,同一组内消费者协同消费分区,避免重复消费。
auto.offset.reset- 无偏移量或偏移量无效时的行为:
earliest(从最早消息开始)、latest(从最新消息开始)。
- 无偏移量或偏移量无效时的行为:
fetch.min.bytes/fetch.max.wait.msfetch.min.bytes:单次拉取的最小字节数,默认1,增大可减少请求频率。fetch.max.wait.ms:等待满足fetch.min.bytes的最长时间,默认500ms。
三、通用关键参数
num.partitions:Topic默认分区数,影响并行度,建议设置为集群节点数的倍数。offsets.topic.replication.factor:消费者偏移量Topic的副本数,集群环境建议设置为节点数。log.segment.bytes:单个日志段文件大小,默认1GB,影响日志滚动频率。
以上参数直接影响Kafka的性能、可靠性和可用性,生产环境中需根据业务需求调整[1,2,3,4,5,6,7,8,9,10,11]。