在初始化 Kafka 集群配置时,有一些重要的参数需要正确设置,以确保集群的性能、可靠性和可用性。这些参数分为不同的类别,包括 broker 配置、topic 配置和消费者配置。以下是一些关键参数及其作用:
Broker 配置
- broker.id
- 描述:每个 Kafka broker 的唯一标识符。
- 示例:
broker.id=1
- zookeeper.connect
- 描述:ZooKeeper 集群的连接字符串,用于 Kafka 集群的元数据管理和协调。
- 示例:
zookeeper.connect=localhost:2181
- log.dirs
- 描述:Kafka 存储日志文件的目录,可以配置多个目录,以实现更好的磁盘 I/O 性能。
- 示例:
log.dirs=/var/lib/kafka/logs
- num.partitions
- 描述:默认的 topic 分区数量。
- 示例:
num.partitions=3
- default.replication.factor
- 描述:默认的 topic 副本数量。
- 示例:
default.replication.factor=3
- log.retention.hours
- 描述:日志保留的时间,超过这个时间的日志将被删除。
- 示例:
log.retention.hours=168
(保留 7 天)
- log.segment.bytes
- 描述:日志段的最大大小,达到这个大小时,Kafka 会创建一个新的日志段。
- 示例:
log.segment.bytes=1073741824
(1 GB)
- log.retention.bytes
- 描述:每个分区的日志数据的最大保留大小,超过这个大小的日志将被删除。
- 示例:
log.retention.bytes=1073741824
(1 GB)
- auto.create.topics.enable
- 描述:是否允许自动创建 topic。
- 示例:
auto.create.topics.enable=true
- listeners
- 描述:配置 broker 监听的网络接口,用于客户端连接。
- 示例:
listeners=PLAINTEXT://:9092
- log.cleaner.enable
- 描述:是否启用日志清理(压缩)。
- 示例:
log.cleaner.enable=true
- min.insync.replicas
- 描述:在 ack=all 的情况下,要求最小同步副本数,以确保消息的可靠性。
- 示例:
min.insync.replicas=2
Topic 配置
- cleanup.policy
- 描述:日志清理策略,可以是
delete
或compact
。 - 示例:
cleanup.policy=delete
- 描述:日志清理策略,可以是
- retention.ms
- 描述:日志保留的时间(以毫秒为单位)。
- 示例:
retention.ms=604800000
(7 天)
- retention.bytes
- 描述:每个分区的日志数据的最大保留大小。
- 示例:
retention.bytes=1073741824
(1 GB)
- segment.ms
- 描述:日志段的最大时间(以毫秒为单位)。
- 示例:
segment.ms=604800000
(7 天)
生产者配置
- acks
- 描述:消息确认的级别,可以是
0
,1
或all
。 - 示例:
acks=all
- 描述:消息确认的级别,可以是
- retries
- 描述:消息发送失败时的重试次数。
- 示例:
retries=3
- batch.size
- 描述:每个批次的消息最大大小(以字节为单位)。
- 示例:
batch.size=16384
(16 KB)
- linger.ms
- 描述:生产者在发送消息前等待的时间,以便批处理更多的消息。
- 示例:
linger.ms=5
- buffer.memory
- 描述:生产者用于缓冲等待发送的消息的内存总量。
- 示例:
buffer.memory=33554432
(32 MB)
消费者配置
- group.id
- 描述:消费者组的唯一标识符。
- 示例:
group.id=my-consumer-group
- auto.offset.reset
- 描述:在没有初始偏移量或偏移量超出范围时该如何处理,可以是
latest
或earliest
。 - 示例:
auto.offset.reset=earliest
- 描述:在没有初始偏移量或偏移量超出范围时该如何处理,可以是
- enable.auto.commit
- 描述:是否启用自动提交偏移量。
- 示例:
enable.auto.commit=true
- auto.commit.interval.ms
- 描述:自动提交偏移量的时间间隔(以毫秒为单位)。
- 示例:
auto.commit.interval.ms=5000
- max.poll.records
- 描述:每次调用
poll()
时返回的最大记录数。 - 示例:
max.poll.records=500
- 描述:每次调用
通过正确配置这些参数,可以确保 Kafka 集群在性能、可靠性和可用性方面达到最佳状态。具体的参数值应根据实际使用场景和需求进行调整。