kafka保障数据的完整性

一、kafka保障消息不丢失

        kafka的消息传输是从生产者发送消息开始一直到消费者接受消息的完整过程,在这个过程中的各个阶段都可能发生消息丢失,因此,为保障消息不丢失,我们应该完整的考虑到每个阶段。

1.生产者发送消息

        在生产者发送消息的阶段,我们可以采用异步回调发送的方式,如果消息发送失败,可以通过回调的方式,获取到失败后的消息,可通过重新发送或者记录日志后续补偿来解决发送失败的问题;也可以通过设置消息重试,解决网络抖动导致的消息发送失败。

2.broker中消息丢失

        broker中的消息丢失可以通过kafka的复制机制来解决,在生产者发送消息的时候,设置一个确认机制acks,将参数设置为all,这样在发送消息到分区的时候,不仅保证了broker的复制成功,同时也能在follwer分区保证保存确认;只有当所有的副本都保存确认之后才算是消息发送成功,这样就在很大程度上保证了消息不会在broker丢失。

3.消费者端接受消息丢失

        kafka消息的消费都是通过offset进行标记消费的,消费者默认是自动按期提交已经消费的偏移量,默认是5s提交一次。如果出现重平衡的消息,就会出现重复消费或者消息丢失;这种情况下,一般都是通过禁用自动提交偏移量,改为手动提交的方式,当消费者消费消息成功后再报告给broker消费的位置,这样就避免了消息的丢失或者重复消费。

二、kafka设置手动提交

        1.配置消费者参数:enable.auto.commit=false;

        2.在消费者中,通过调用poll()方法来获取消息,消息处理完成后,通过调用commitSync()方法来手动提交偏移量。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值