首页/数据/数据工程与 ETL 速查/生产者 acks 与持久性
Kafka64 条

生产者 acks 与持久性

acks 控制生产者在收到多少副本确认后才算写成功:0 不等确认、1 等 Leader、all 等 ISR 全部写入。持久性要求越高,延迟与失败概率越高。

取值

acks确认条件风险适用
0发送即返回Broker 故障可能丢允许丢失的埋点
1Leader 落盘即返回Leader 宕机且未复制则丢一般业务日志
all(-1)ISR 全部确认ISR 不足时写入失败账务、事件源

高持久性组合

高持久性组合
acks=all
enable.idempotence=true
min.insync.replicas=2      # 主题侧配置,与 acks=all 配合
Kafka 3.0 起生产者默认 acks=all 且幂等开启,升级前确认旧客户端行为的差异。

易错点

  • acks=all 但 min.insync.replicas=1 时,只有一个副本在线也可写成功,保护有限
  • 把 acks 调高会降低吞吐,压测时要用与生产一致的配置

数据来源与参考

  • Apache Kafka 官方文档:Producer Configs(acks、enable.idempotence)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌