码迷,mamicode.com
首页 > 其他好文 > 详细

kafka保证消息有序

时间:2020-04-03 15:05:39      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:就会   cti   ret   失败   nec   sts   发送消息   数据   code   

kafka是可以保证同一个分区里面的消息写入是有序的。也就是说,如果生产者按照一定的顺序发送消息,broker就会按照这个消息顺序来将他们写入分区,消费者也会按照一定的顺序将他们写入分区,消费者也会按照同样的顺序读取它们。

在某些情况下,数据的顺序是很重要的,例如,在一个账户存入100元再取出来 和 先从一个账户取100元之后再存进去是截然不同的。

让消息无序

kafka有个max.in.flight.requests.per.connection参数,这个参数是用来调整每个分区的可写入的连接数。如果把retries参数设置为一个非零整数,同时把max.in.flight.requests.per.connection设置为一个大于1的整数,那么,如果第一个批次消息写入失败,而第二个批次写入成功,broker会重试写入第一个批次。如果此时第一个批次也写入成功,那么两个批次的顺序就反过来了。

让消息有序

一般来说,如果某些场景要求消息是有序的,那么消息是否写入成功也是很关键的,所以不建议把retries参数设置为0。可以把max.in.flight.requests.per.connection设置为1,这样在生产者尝试将第一批消息发送到分区上时,就不会有其他的消息发送给broker了。不过这样会严重影响生产的吞吐量,所以只有在对消息的顺序有严格的要求的情况下才能这么做。

kafka保证消息有序

标签:就会   cti   ret   失败   nec   sts   发送消息   数据   code   

原文地址:https://www.cnblogs.com/StivenYang/p/12626501.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!