在Kafka配置中,有几个关键参数尤为重要,它们可以根据业务需求进行调优,以优化性能、可靠性和可用性。以下是一些最关键的参数及其建议值:
Broker配置调优num.partitions:分区个数,设置为与消费者的线程数基本相等。log.dirs:指定了Broker需要使用的若干个文件目录路径,建议配置多个路径以提升读写性能和实现故障转移。num.io.threads:负责写磁盘的线程数,建议占总核数的50%。num.network.threads:数据传输线程数,建议占总核数的50%。default.replication.factor:至少设置为3,以保证数据可靠性。unclean.leader.election.enable:建议设置为false,以避免数据丢失。Producer配置调优batch.size:批量提交消息的字节数,建议设置为1M。linger.ms:发送间隔时间,建议设置为100ms以上。compression.type:压缩类型,可以使用lz4以提高吞吐量。acks:应答机制,建议设置为all以保证消息可靠性。buffer.memory:内存缓冲区大小,建议设置为64M以上。Consumer配置调优fetch.min.bytes:从broker获取消息的最小字节数,建议设置为1M。fetch.max.wait.ms:当fetch.min.bytes不满足时,从broker获取消息的最大等待时间,建议设置为1000ms。其他关键参数zookeeper.connect:指定ZooKeeper连接地址,格式为CSV。listeners:监听器,指定外部连接者访问Kafka服务的协议、主机名和端口。advertised.listeners:对外发布的监听器,用于外网访问。请注意,这些参数的最佳值可能会根据具体的业务场景、硬件资源和预期负载有所不同。在生产环境中进行调优时,建议根据实际业务需求和系统负载进行细致的分析和测试。