Back to Knowledge Hub

    Kafka 的 ACK 机制是怎样的?

    Kafka
    消息队列
    可靠性
    分布式系统

    什么是 ACK 机制?

    ACK(Acknowledgment)机制是 Kafka 用来确保消息可靠性传输的一种机制。它允许生产者在消息发送后,等待来自 Broker 的确认响应,以此来保证消息已经被正确地接收和存储。

    ACK 机制的三种级别

    Kafka 提供了三种不同级别的 ACK 机制,可以根据业务需求在数据可靠性和性能之间做出权衡。

    1. acks=0(无确认)

    acks=0

    特点:

    • 生产者发送消息后不等待任何确认
    • 最高的吞吐量
    • 可能丢失消息
    • 适用于允许少量消息丢失的场景(如日志收集)

    2. acks=1(Leader确认)

    acks=1

    特点:

    • 等待 Leader 副本确认
    • 中等的吞吐量
    • Leader 宕机时可能丢消息
    • 常用于对可靠性要求中等的场景

    3. acks=-1 或 all(全部确认)

    acks=-1

    特点:

    • 等待所有 ISR 中的副本确认 特点:
    • 等待所有 ISR 中的副本确认
    • 最低的吞吐量
    • 最高的可靠性保证
    • 适用于对数据一致性要求较高的场景

    配置示例

    生产者配置

    # ACK级别设置
    acks=all    # 或 acks=0, acks=1
    

    ACK 机制的对比与使用场景

    特性acks=0acks=1acks=all
    消息可靠性
    响应延迟最低中等最高
    吞吐量最高中等最低
    是否会丢消息可能丢失Leader宕机时可能丢失不会丢失
    适用场景日志收集
    监控数据
    一般业务消息
    实时分析
    支付交易
    核心业务
    CPU开销最低中等最高
    网络开销最低中等最高

    小结

    Kafka 的 ACK 机制通过不同的确认级别,让用户可以根据业务需求在数据可靠性和性能之间做出选择。

    相关推荐: