Kafka(十四)数据可靠性和数据精准一次(Exactly Once)

数据完全可靠条件

= ACK级别设置为-1 + 分区副本大于等于2 + ISR里应答的最小副本数量大于等于2

可靠性总结:

         ⚫ acks=0,生产者发送过来数据就不管了,可靠性差,效率高;

         ⚫ acks=1,生产者发送过来数据Leader应答,可靠性中等,效率中等;

         ⚫ acks=-1,生产者发送过来数据Leader和ISR队列里面所有Follwer应答,可靠性高,效率低;

在生产环境中,acks=0很少使用;acks=1,一般用于传输普通日志,允许丢个别数据;acks=-1,一般用于传输和钱相关的数据,对可靠性要求比较高的场景。

数据重复分析:

acks: -1(all):生产者发送过来的数据,Leader和ISR队列里面的所有节点收齐数据后应答。

重复数据的判断标准

幂等性:具有<PID, Partition, SeqNumber>相同主键的消息提交时,Broker只会持久化一条。其中PID是Kafka每次重启都会分配一个新的Partition 表示分区号Sequence Number是单调自增的

所以幂等性只能保证的是在单分区单会话内不重复

如何使用幂等性

开启参数 enable.idempotence 默认为 true,false 关闭。

数据精准一次(Exactly Once)

1)生产者角度

        ⚫ acks 设置为-1 (acks=-1)。

        ⚫ 幂等性(enable.idempotence = true) + 事务 。

2)broker 服务端角度

        ⚫ 分区副本大于等于 2 (--replication-factor 2)。

        ⚫ ISR 里应答的最小副本数量大于等于 2 (min.insync.replicas = 2)。

3)消费者

        ⚫ 事务 + 手动提交 offset (enable.auto.commit = false)。

        ⚫ 消费者输出的目的地必须支持事务(MySQL、Kafka)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值