美文网首页
(8)Kafka怎么体现消息顺序性

(8)Kafka怎么体现消息顺序性

作者: hedgehog1112 | 来源:发表于2021-02-27 23:01 被阅读0次

概要:2:方案1、2、3,消费多线程只串行,有点鸡肋了

一、Kafka只能保证分区内消息顺序有序,无法保证全局有序

生产者:通过分区leader顺序写入,保证顺序性

消费者:同分区只能被一个group里一个消费者消费

消息发不同分区,分区间顺序是无法保证的

二、如何做到并发且全局有序?

解题思路:1)发送端 或 消费端并发,多线程发送或消费

                  2)一个分区,或按顺序发送到多个分区 原顺序消费

整体思路:顺序发送到同一分区增加生产/消费者并发度

方案1

topic一个分区多线程生产消费

实现简单,但有热点瓶颈问题

方案2

多个分区,数据发送到  同一分区,多线程消费

优点:多分区,分摊非同类数据压力

弊端:相同业务同一分区,热点瓶颈

方案3

多分区,数据发送  不同分区,按发送分区顺序消费,线程发送和消费

步骤:多线程生产,按分区号大小,依次发送,相同数量大小数据,按分区号顺序消费

缺点:消费性能极大下降无法真正并发

4、多线程消费能保证顺序消费吗

1)发:1消息入给A线程、2给B、3给C

2):A拿1、B拿2、C拿3

3)比较:全部拿到才可下一步,比较id满足MA<MB<MC

4)入库:按线程顺序M1、M2、M3,通过join、CounDownLatch、Executors.SingleThreadExecutor等实现线程串行执行

实际来说,不可能 分区并发有序,消费多线程只串行,有点鸡肋了

三、最优方案:加队列

一个 topic,一个 partition,一个 consumer,内部单线程消费,吞吐量低,一般不用

N 个内存 queue,相同 key 同一 queue;N 个线程,分别消费queue,保证顺序性

四、Kafka顺序性应用

采集用户访问 轨迹,重写分区器把用户id作为分区键,用户访问埋点记录按顺序到一个分区有序消费

https://blog.csdn.net/jacksonking/article/details/107458383

https://www.cnblogs.com/windpoplar/p/10747696.html

相关文章

  • (8)Kafka怎么体现消息顺序性

    概要:2:方案1、2、3,消费多线程只串行,有点鸡肋了 一、Kafka只能保证分区内消息顺序有序,无法保证全局有序...

  • Kafka对于消息顺序性的最佳实践

    Kafka可以保证消息在一个Partition分区内的顺序性。如果生产者按照顺序发送消息,Kafka将按照这个顺序...

  • MQ随记(2)

    如何保证消息不会被重复消费(保证消息消费时的幂等性) kafka 按照数据进入kafka的顺序,kafka会给每条...

  • Kafka/RocketMQ顺序消息对比

    一、Kafka顺序消息 Producer端:Kafka的顺序消息是通过partition key,将某类消息(例如...

  • kafka学习笔记2

    1、kafka分布式的情况下如何保证消息的顺序性 kafka并不适用对数据时序性要求严格的场景Kafka的做法是提...

  • Kafka Produce流程

    Kafka是一个消息订阅系统,通过接收消息顺序存储在本地磁盘,以便后端应用从kafka读取消息。本文基于Kafka...

  • Kafka

    1.Kafka高可用怎么做的? 2.Kafka消息不重复怎么做的?如何保证消息消费时的幂等性? 3.Kakfa如何...

  • kafka工作原理及保证消息顺序性

    kafka工作原理:https://www.cnblogs.com/sujing/p/10960832.html[...

  • kafka顺序消息踩坑记录

    Kafka顺序消息消息 1.消息发送的api 2.KafkaProducer.class 封装获取partiti...

  • 可靠消息队列的实现 基于SpringBoot + LTS + S

    使用消息队列实现下面三个目标 1.保证事务一致性2.顺序消息投递及消费3.幂等性即 每个消息只消费一次 Kafka...

网友评论

      本文标题:(8)Kafka怎么体现消息顺序性

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