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

    起风了,努力生存
  • 相关阅读:
    ASP.NET Core 中的配置
    依赖注入简介
    Authoriztion Code Flow
    建立IdentityServer项目
    OAuth2 OpenID Connect概述
    Asp.Net Core 项目运行部署到发布
    javascript Template tmpl
    webform ajax 异步请求
    hosts 文件
    webform 使用富文本编辑器
  • 原文地址:https://www.cnblogs.com/StivenYang/p/12626501.html
Copyright © 2011-2022 走看看