• kafka保证消息有序


    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了。不过这样会严重影响生产的吞吐量,所以只有在对消息的顺序有严格的要求的情况下才能这么做。

    起风了,努力生存
  • 相关阅读:
    binary and out mode to open a file
    ADV7482&TP2825开发之总结
    C++ 操作符重载
    OpenCV学习(一)基础篇
    Linux设备驱动程序 第三版 读书笔记(一)
    My First Linux Module
    Bitmap每个像素值由指定的掩码决定
    C++ File Binary
    Bitmap RGB24 4字节对齐
    查看binlog的简单方法!
  • 原文地址:https://www.cnblogs.com/StivenYang/p/12626501.html
Copyright © 2020-2023  润新知