kafka-保证数据不重复-生产者开启幂等性和事务的作用?

1. 生产者开启幂等性为什么能去重?

1.1 场景

适用于消息在写入到服务器日志后,由于网络故障,生产者没有及时收到服务端的ACK消息,生产者误以为消息没有持久化到服务端,导致生产者重复发送该消息,造成了消息的重复现象,而幂等性就是为了解决该问题。

1.2 去重原理

通过3个值的唯一性去重:

  1. PID:生产者ID
  2. 分区号
  3. seq:单调递增

2. 生产者开启事务为什么能去重?

2.1 场景

当数据发送到broker时,失败了,导致ack没有应答成功,如果没有开启事务,那么这条数据可能只落在了leader的磁盘上,没有落在flower的磁盘上,此时会进行重试,再把数据发送一遍,那么leader的数据就重复了。

2.2 去重原理

如果开启事务那就会有原子性,数据要么写成功落盘,要么写失败回滚。

当数据发送到broker时,失败了,导致ack应答失败,这条数据可能只落在了leader的磁盘上,没有落在flower的磁盘上,如果开启了事务,那么会进行回滚,将leader的数据回滚,然后会进行重试,再把数据发送一遍,就解决了重复问题。

相关推荐
飞火流星0202711 分钟前
验证kafka队列中的数据是否是被压缩后的数据
分布式·kafka·验证kafka队列中的数据格式·验证kafka数据压缩·验证kafka数据是否已被压缩
小程故事多_801 小时前
详解Kafka重平衡与分区重分配,核心差异、原理及实操辨析
分布式·kafka·linq
飞火流星020271 小时前
kafka设置数据压缩的方式及作用
分布式·kafka·kafka数据压缩·kafka压缩配置级别·kafka数里压缩配置作用·kafka数据压缩配置级别
予枫的编程笔记1 小时前
【Kafka进阶篇】深入Kafka内部:日志存储的设计思路,藏着中间件高性能的真相
kafka·消息中间件·分布式系统·kafka底层原理·kafka日志存储·kafka索引机制·java中间件
百锦再15 小时前
Java中的反射机制详解:从原理到实践的全面剖析
java·开发语言·jvm·spring boot·struts·spring cloud·kafka
十月南城1 天前
Kafka生态深化——Schema与Connect、CDC入湖的链路与一致性挑战
分布式·kafka
予枫的编程笔记1 天前
【Kafka基础篇】Kafka Consumer Group设计哲学拆解:为什么它能支撑高并发消费?
kafka·消息队列·consumer消费机制·consumer group·offset提交·pull模型·大数据实战
予枫的编程笔记1 天前
【Kafka基础篇】Kafka高可用核心:ISR机制与ACK策略详解,吃透可靠性与吞吐量权衡
java·kafka·消息队列·高可用·分布式系统·isr机制·ack策略
美好的事情能不能发生在我身上1 天前
kafka基础和应用
分布式·kafka
予枫的编程笔记1 天前
【Kafka基础篇】面试高频题:Rebalance触发条件、执行阶段,一篇讲透不踩坑
kafka·rebalance·参数调优·分布式中间件·重平衡机制·面试考点·分布式开发