栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

24-kafka如何保证多分区之间的数据是有序的

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

24-kafka如何保证多分区之间的数据是有序的

题目:kafka如何保证多分区之间的数据是有序的
答案:

一、全局有序
由于kafka的一个topic可以分为多个partition,producer发送消息的时候,是分散在不同的partition的。当producer按顺序发消息给broker,但进入kafka之后,这些消息就不一定进到哪个partition,会导致顺序是乱的。
因此要满足全局有序,需要1个topic只能对应1个partition

而且对应的consumer也要使用单线程或者保证消费顺序的线程模型,否则会出现下图所示,消费端造成的消费乱序

二、局部有序
要满足局部有序,只需要在发消息的时候指定partition key,kafka对其进行hash计算,根据计算结果决定放入哪个partition。这样partition key相同的消息会放在同一个partition。此时,partition数量仍然可以设置多个,提升topic的整体吞吐量。
如下图所示,在不增加partition数量的情况下想提高消费速度,可以考虑再次hash唯一标识(例如订单id)到不同的线程上,多个消费者小城并发处理消息(依旧可以保证局部有序)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/936943.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号