Kafka 保证消息消费的全局顺序性问题
参考:https://mp.weixin.qq.com/s/A69gY_tDXrs4kQPiuUNJTQ
-
Kafka 的设计目标是提供高吞吐量和低延迟,而不是强制保证全局有序性,所以Kafka使用多分区的概念,并且只保证单分区有序
-
如果想要实现消息的全局有序
-
方法1.单分区策略:
一个主题下只创建一个分区,一个消费者只消费一个分区,但这样做毫无并发性可言,极大降低系统性能
-
方法2. 基于 key 的消息分配策略:
-
由于相同的 key 就发送到同一分区,这样就能够保证了消费的消息是有序的。然而,如果只有一个消费者消费相同 key 的消息,与前面单分区相比没有什么区别
方法3. 自定义分区器来实现这个需求。你可以创建一个实现了 IPartitioner 接口的自定义分区器类,并在生产者配置中指定使用该分区器。
方法4. 消息发送者按照序号生成数据,写入一张表带Index、status字段,消费者根据index、status字段判断下一个序号。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2016-12-20 MVC 点击下载文档