Kafka重复消费 漏消费 有序性

1.消费者自动提交偏移量

2.消费者手动提交偏移量

当我们的消费者Poll数据到Consumer当要更新offset时挂掉了此时我们的offect并没有被修改成功当Consumer好了时在重新读取的offect还是3所以会造成数据的重复消费
在这里插入图片描述

那些情景会造成消息漏消费?

先提交offset,后消费,有可能造成数据的重复

如何保证有序性

因为Kafka只能保证分区内有序当我们有多个分区但是想保证我们数据的有序性时我们可以使用一个生产者一个消费者一个分区,或者我们可以指定想要有序的数据到同一个分区

生产者

发送消息的分区策略,根据Key来指定分区。

有顺序要求的消息,key要一样,即考虑使用业务唯一ID,这样就会被发送到相同的分区中

kafka集群

同一个分区中的数据天然有序,分区相当于是个双端队列

消费者

同一个主题下的分区,只能被同一个消费者组中的一个消费者消费。

对于Kafka消费异常重新消费的问题,有几种常见的处理方式: 1. 手动提交偏移量(Manual Offset Commit):在消费者应用程序中,可以手动管理消费的偏移量,当消费异常发生,可以将偏移量回滚到异常发生之前的位置,并重新消费消息。这种方式需要开发者自己实现偏移量管理和重新消费的逻辑。 2. 定期提交偏移量(Periodic Offset Commit):消费者应用程序可以定期提交偏移量,例如每隔一段间或每消费一定数量的消息后提交偏移量。这样即使发生异常,下次启动可以从上一次提交的偏移量处继续消费。 3. 使用seek()方法重新定位偏移量:Kafka提供了seek()方法,可以手动将消费者的偏移量定位到指定位置。当发生异常,可以使用此方法将偏移量重新定位到异常发生之前的位置,并重新消费。 4. 使用Kafka Connect消费者重置偏移量(Consumer Offset Reset):Kafka Connect是Kafka提供的一种分布式数据集成工具,其中包含了一些内置的消费者重置偏移量的功能。通过配置相应的参数,可以将消费者的偏移量重置为最早或最新的位置,从而重新消费消息。 需要根据具体的场景和需求选择适合的处理方式,并结合消费者应用程序的逻辑来实现重新消费的功能。同,为了保证消息的有序性和避免数据重复消费,还需要考虑幂等性处理和消息去重等机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值