阅读量:124
以下Kafka配置对稳定性有关键影响:
-
副本与高可用配置
replication.factor:副本数≥2,建议3(生产环境),确保单节点故障时数据不丢失。min.insync.replicas:与生产者acks配合,确保写入时至少有指定数量的副本同步,避免数据丢失。unclean.leader.election.enable:设为false,避免非同步副本成为Leader导致数据不一致。
-
Broker核心参数
log.dirs:配置多个磁盘目录分散IO压力,提升读写可靠性。num.network.threads/num.io.threads:根据CPU核数调整,确保网络和磁盘IO处理能力。socket.send/receive.buffer.bytes:适当增大缓冲区,提升网络传输效率。
-
生产者与消费者配置
- 生产者
acks:all或-1确保消息持久化,但吞吐量降低;1平衡可靠性和性能。 - 生产者
retries:设置合理重试次数,避免网络抖动导致消息丢失。 - 消费者
session.timeout.ms/heartbeat.interval.ms:合理设置心跳间隔,避免消费组频繁重平衡。
- 生产者
-
资源与系统配置
- 内存:避免分配过多堆内存(建议≤5GB),预留足够系统缓存。
- 磁盘:使用SSD或RAID,避免单点磁盘故障。
- 网络:确保低延迟、高带宽,跨机房部署需考虑网络分区问题。
-
监控与运维配置
- 启用JMX监控,关注
UnderReplicatedPartitions等指标,及时发现副本同步问题。 - 配置合理的日志保留策略(
log.retention.hours/bytes),避免磁盘占满。
- 启用JMX监控,关注