美文网首页
kafka顺序保证

kafka顺序保证

作者: losangele | 来源:发表于2021-01-26 18:51 被阅读0次

    kafka顺序保证

    理想情况:

    Kafka 可以保证同 一个分区里的消息是有序的。

    也就是说,如果生产者按照一定的顺序发送消息, broker 就会按照这个顺序把它们写入分区,消费者也按照同样的顺序读取它们。

    实际情况:

    在某些情况下 顺序是非常重要的,有些场景对顺序不是很敏感。

    如果把retries设为非零整数,同时把 max.in.flight.requests.per.connection 设为比 1大的数,那么,如果第 一个批次消息写入失败,而第 二个批次写入 成功, broker 会重试写入第 一个批次。如果此时第 一个批次也写入成功,那 么两个批次的顺序就反过来了。

    使用建议

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

    PS:

    max.in.flight.requests.per.connection = 1 限制客户端在单个连接上能够发送的未响应请求的个数。设置此值是1表示kafka broker在响应请求之前client不能再向同一个broker发送请求。

    相关文章

      网友评论

          本文标题:kafka顺序保证

          本文链接:https://www.haomeiwen.com/subject/ocxnzktx.html