kafka异步推送设置重试_一篇文章了解 Kafka 幂等性的原理及实践

本文探讨了Kafka幂等性的重要性,分析了影响幂等性的因素,包括网络分区和producer重试导致的问题。Kafka通过幂等型producer和事务型producer确保发送幂等性,解决单会话和多会话幂等性问题。同时,文章提到了consumer端幂等性面临的挑战,提出了相应处理策略。
摘要由CSDN通过智能技术生成

01 幂等性如此重要

Kafka作为分布式MQ,大量用于分布式系统中,如消息推送系统、业务平台系统(如结算平台),就拿结算来说,业务方作为上游把数据打到结算平台,如果一份数据被计算、处理了多次,产生的后果将会特别严重。

d097fefa5243ac348f6b2768ffa38ef0.png

02 哪些因素影响幂等性

使用Kafka时,需要保证exactly-once语义。要知道在分布式系统中,出现网络分区是不可避免的,如果kafka broker 在回复ack时,出现网络故障或者是full gc导致ack timeout,producer将会重发,如何保证producer重试时不造成重复or乱序?又或者producer 挂了,新的producer并没有old producer的状态数据,这个时候如何保证幂等?即使Kafka 发送消息满足了幂等,consumer拉取到消息后,把消息交给线程池workers,workers线程对message的处理可能包含异步操作,又会出现以下情况:

  • 先commit,再执行业务逻辑:提交成功,处理失败 。造成丢失
  • 先执行业务逻辑,再commit:提交失败,执行成功。造成重复执行
  • 先执行业务逻辑,再commit:提交成功,异步执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值