kafka是如何处理数据乱序问题的?

1.数据有序

生产者发送的数据,单分区内可以做到有序,多分区无法保证,除非把多个分区的数据拉取到消费端,进行排序,但是这样做效率很低,不如直接设置一个分区

2.数据乱序

1)kafka在1.x版本之前保证数据单分区有序,条件如下:

        max.in.flight.requests.per.connection=1(不需要考虑是否开启幂等性)

2)kafka在1.x及以后版本保证数据单分区有序,条件如下:

        1.开启幂等性

        max.in.flight.requests.per.connection需要设置小于等于5

        2.未开启幂等性

        max.in.flight.requests.per.connection需要设置为1

        原因:因为在kafka1.x之后,启用幂等性后,kafka服务端会缓存producer发来的最近5个request的元数据,所以无论如何都会保证最近5个request的数据是有序的。

出现乱序的原因:

        生产者在发送3请求时,发生异常,发生异常需要重新发送,所以排在了后面,在进行落盘的时候,先落盘1,2,落盘3的时候发现是4,此时会等到3出现为止,然后将345排序,排序后再进行后续落盘。

        顺序错乱了,会自动排序(开启幂等性)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值