当前位置: 首页 > news >正文

Kafka Producer的acks参数对消息可靠性有何影响?

1. acks=0

  • 可靠性最低
  • 生产者发送消息后不等待任何Broker确认
  • 可能丢失消息(Broker处理失败/网络丢失时无法感知)
  • 吞吐量最高,适用于允许数据丢失的场景(如日志收集)

2. acks=1 (默认值)

  • Leader副本确认模式
  • 生产者等待Leader副本写入本地log后确认
  • 可能丢失数据(Leader写入后但其他副本未同步时Leader宕机)
  • 在可靠性和吞吐量之间取得平衡

3. acks=all (或 -1)

  • 最高可靠性
  • 生产者等待所有ISR(In-Sync Replicas)副本确认
  • 需要配合min.insync.replicas参数使用(建议 >=2)
  • 确保消息被所有ISR副本持久化后才返回确认
  • 吞吐量最低,但可防止任何副本故障导致的数据丢失

可靠性补充建议:

  1. 当使用acks=all时,建议设置retries > 0启用重试机制
  2. 配置max.in.flight.requests.per.connection=1保证消息顺序
  3. 监控ISR集合大小,避免因副本掉线导致生产阻塞
// 典型可靠性配置示例
// ... existing code ...
props.put(ProducerConfig.ACKS_CONFIG, "all");  // <mcsymbol name="ACKS_CONFIG" filename="KafkaConfig.java" path="src/main/java/com/example/kafka/KafkaConfig.java" startline="5" type="field"></mcsymbol>
// 要求所有ISR副本确认写入(最高可靠性保证)
// 需配合min.insync.replicas=2使用,防止单点故障props.put(ProducerConfig.RETRIES_CONFIG, Integer.MAX_VALUE);  // <mcsymbol name="RETRIES_CONFIG" filename="KafkaConfig.java" path="src/main/java/com/example/kafka/KafkaConfig.java" startline="6" type="field"></mcsymbol>
// 设置无限次重试(需配合delivery.timeout.ms参数)
// 当遇到可恢复错误时(如Leader选举、网络抖动)持续重试props.put(ProducerConfig.ENABLE_IDEMPOTENCE_CONFIG, true);  // <mcsymbol name="ENABLE_IDEMPOTENCE_CONFIG" filename="KafkaConfig.java" path="src/main/java/com/example/kafka/KafkaConfig.java" startline="7" type="field"></mcsymbol>
// 启用幂等性生产(自动去重机制)
// 通过producerId+sequenceNumber实现精确一次语义(EOS)props.put(ProducerConfig.MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION, 1);  // <mcsymbol name="MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION" filename="KafkaConfig.java" path="src/main/java/com/example/kafka/KafkaConfig.java" startline="8" type="field"></mcsymbol>
// 限制单个连接未确认请求数为1(保证消息顺序)
// 可能降低吞吐量但避免消息乱序
// ... existing code ...

相关文章:

  • Windows 中的 bat(批处理)文件处理使用教程典型实例和实战技巧
  • Chrome 136 H265 WebRTC 支持 正式版本已包含
  • JESD204B 探究
  • [FPGA VIDEO IP] VCU
  • SQL Server 数据库重命名
  • 数据转储(go)
  • 麒麟、UOS系统在线打开word文件并提取修订痕迹
  • SpringBoot多工程项目微服务install时如何不安装到本地仓库
  • word模板填充导出-(支持word导出、pdf导出)
  • Langchain+文本摘要-refine
  • 芯片软错误概率探究:基于汽车芯片安全设计视角
  • 理解数据库存储以及查询(集合)
  • 数据科学与计算
  • 免疫细胞靶点“破局战”:从抗体到CAR-T,自免疾病治疗的3大技术突破
  • 【算法学习】哈希表篇:哈希表的使用场景和使用方法
  • ES使用之查询方式
  • 用Power shell脚本批量发布rdl文件到SQL Server Reporting Service
  • Android Framework框架与启动过程初识一
  • uniapp如何获取安卓原生的Intent对象
  • 分布式-redisson
  • 停电催生商机,中国品牌 “照亮” 西班牙
  • 人民日报评论员:焕发风雨无阻、奋勇前行的精气神
  • 比黄油年糕热量还高,这个火爆全网的甜品劝你慎吃
  • 关于新冠疫情防控与病毒溯源的中方行动和立场
  • 是否进行了及时有效处置?伤者情况如何?辽阳市相关负责人就饭店火灾事故答问
  • “即买即退”扩容提质,上海静安推出离境退税2.0版新政