kafka保证消息有序性

kafka 保证有序性

背景:消息是按照生产顺序发布到 kafka 上

接着,会经历两个阶段:这两个阶段都可能会导致消息的乱序

  • 第一个阶段:根据 topic 将消息放到对应 partition

    如果是随机投放消息到多个 partition 中,这会导致需要被有序消费的消息被 kafka 并行处理。

    原因:partition是Kafka并行度调优的最小单元。

    解决方式:确保需要被有序消费的消息处于同一个 partition

    1. 建立只有一个分区的 topic
    2. 对该 topic 建立多个分区,但需要在发消息时指定 partition key,kafka 会进行 Hash 计算(这种比第一种可以提高该 topic 的吞吐量)
  • 第二个阶段:consumer 消费该 partition 的消息

    如果有多个消费者线程去消费,会导致乱序。

    原因:因为每个消费者线程都在内存中用个队列存放消息,它们之间是并发处理的。

    解决方式:确保需要被有序消费的消息处于同一个消费者线程

    1. 消费端使用单线程模型
    2. 使用多线程模型,但需要利用消息的唯一标识(可通过 Hash )将他们分配到同一个消费者线程上
相关推荐
笨蛋不要掉眼泪3 小时前
RabbitMQ消息队列:业务幂等性
分布式·rabbitmq·java-rabbitmq
菜地里的小菜鸟3 小时前
k8s部署单节点 Kafka(KRaft 模式)并启用 SASL 认证
kafka·kraft·k8s部署单节点kafkakraft模式·k8s部署kafka
Volunteer Technology4 小时前
Kafka的消费全流程
分布式·kafka·linq
openYuanrong分布式计算引擎5 小时前
openYuanrong 打造 Agent 时代的企业级分布式底座
人工智能·分布式·ai·serverless
Jul1en_5 小时前
【Java 脚手架】封装通用工具类-1
java·spring boot·分布式·spring·spring cloud
篮框坏了6 小时前
Kafka 消费者卡死排查:一个 topic 堵了 18 小时,监控全绿没人发现
kafka
ACP广源盛139246256736 小时前
Qwen3.8-Max 开源预期下@ACP#企业级终端硬件演进机遇与 PCIe 交换芯片落地分析
大数据·人工智能·分布式·单片机·嵌入式硬件
六点_dn6 小时前
RabbitMQ常见知识点总结
分布式·rabbitmq
会博通·代码搬运工6 小时前
会博通API对接实战:工程企业文档分布式采集系统的技术实现与Python SDK详解
开发语言·分布式·python·线性代数·矩阵·架构·电子档案合规
逐光老顽童7 小时前
第 2 章:彻底搞懂 K8s Pod——从 YAML 到调度全流程
分布式·云原生