Apache Kafka 是一个高吞吐量、分布式、可水平扩展的消息队列系统,广泛应用于实时数据流处理、日志聚合、事件驱动架构等场景。本文将整理 Kafka 的核心关键点,帮助开发者高效使用 Kafka。
# 确保消息可靠投递
acks=all # 所有副本确认后才返回成功
retries=3 # 失败重试次数
enable.idempotence=true # 启用幂等性,防止重复消息
# 提高吞吐量
linger.ms=5 # 批量发送延迟(毫秒)
batch.size=16384 # 批量发送大小(字节)
compression.type=snappy # 压缩方式(snappy/gzip/lz4)
# 消费组管理
group.id=my-group # 消费者组ID
auto.offset.reset=earliest # 无偏移量时从最早(earliest)/最新(latest)开始消费
# 提高消费效率
max.poll.records=500 # 单次拉取最大消息数
fetch.max.bytes=52428800 # 单次拉取最大字节数
# 数据持久化
log.dirs=/data/kafka # 日志存储目录
num.partitions=3 # 默认分区数
# 高可用
default.replication.factor=2 # 默认副本数
min.insync.replicas=1 # 最少同步副本数(确保数据不丢失)
acks=all
+ retries
+ idempotence
(幂等性)。replication.factor≥2
+ min.insync.replicas≥1
。enable.auto.commit=false
)。enable.idempotence=true
)。batch.size
+ linger.ms
(批量发送)。max.poll.records
+ 多线程消费。num.io.threads
(IO 线程数)和 log.flush.interval.messages
(刷盘策略)。Partitioner
接口。compression.type=snappy # 或 lz4/gzip
UnderReplicatedPartitions
(副本同步延迟)、RequestQueueSize
(请求队列堆积)。Consumer Lag
(消费延迟)。RecordSendRate
(发送速率)、RecordErrorRate
(错误率)。问题 | 可能原因 | 解决方案 |
---|---|---|
Consumer Lag 高 | 消费速度 < 生产速度 | 增加消费者实例、优化消费逻辑 |
消息丢失 | acks=0/1 ,Broker 宕机 |
设置 acks=all + 副本机制 |
重复消费 | Consumer 崩溃后 Offset 未提交 | 手动提交 Offset + 业务去重 |
Broker 负载不均 | Partition 分配不均 | 调整 Partition 数量或手动迁移 |
Kafka 是一个强大的分布式消息系统,但正确使用需要关注:
✅ 消息可靠性(不丢、不重)
✅ 性能优化(分区、批量、压缩)
✅ 监控与运维(Consumer Lag、Broker 健康)
掌握这些关键点,你的 Kafka 应用将更加稳定高效!
延伸阅读:
希望这篇博客能帮助你更好地使用 Kafka!如果有问题,欢迎讨论。