kafka-consumer-分配策略-创新互联

目录

10年积累的成都网站建设、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有保康免费网站建设让你可以放心的选择与我们合作。

分区的分配及再平衡

1 分区分配策略之Range

2 分区分配策略之RoundRobin

3 分区分配策略之Sticky


分区的分配及再平衡

一个consumer group中有多个consumer组成,一个topic有多个partition组成,现在的问题是,到底由哪个onsumer来消费哪个partition的数据?

Kafka有四种主流的分区分配策略: Range、RoundRobin、Sticky、CooperativeSticky。
可以通过配置参数partition.assignment.strategy,修改分区的分配策略。默认策略是Range + CooperativeSticky。Kaka可以同时使用多个分区分配策略。

发生分配的过程在消费者组初始化过程中的第4步leader消费者制定消费方案和第7步中再平衡的过程中,具体初始化流程在此文章中有记录kafka-consumer-基本介绍(理论)_SeaDhdhdhdhdh的博客-博客

1 分区分配策略之Range

Range是对单个topic而言的。

首先对同一个topic里面的分区按照序号进行排序,并对消费者按照字母顺序进行排序。
假如现在有7个分区,3个消费者,排序后的分区将会是0,1,2,3,4,5,6;消费者排序完之后将会是C0,C1,C2。

通过 partitions数/consumer 数来决定每个消费者应该消费几个分区。如果除不尽,那么前面几个消费者将会多消费1个分区。

例如,7/3=2余1,除不尽,那么消费者C0便会多消费1个分区。8/3=2余2,除不尽,那么C0和C1分别多消费一个。

注意:如果只是针对1个topic而言,C0消费者多消费1个分区影响不是很天。但是如果有N多个topic,那么针对每个topic,消费者C0都将多消费1个分区,topic越多,C0消费的分区会比其他消费者明显多消费N个分区。除此之外, 如果再C0消费者挂掉之后生产者发送消息(挂掉以后45秒以内),那么本来有C0消费的0,1,2分区会重新分配给下一个序号的消费者(C1)消费。此时生产者再次发送消息(挂掉45秒以后)会触发再平衡,将剩余两个消费者根据range策略再次进行分配。
容易产生数据倾斜!

2 分区分配策略之RoundRobin

RoundRobin针对集群中所有Topic而言。

RoundRobin 轮询分区策略,是把所有的partition和所有的consumer都列出来,然后按照hashcode进行排序,最后通过轮询算法来分配partition给到各个消费者。

修改分区策略代码:

//设置分区分配策略
properties.put(ConsumerConfig.PARTITION_ASSIGIIEINTLSTRATEGY_CONFI, "org.apache.kafka.clients.consumer.RoundRotinassignor");

注意测试时所有的消费者都要配置分配策略。

如果再C0消费者挂掉之后生产者发送消息(挂掉以后45秒以内),那么本来有C0消费的0,1,2分区会重新分配给其他消费者(C1,C2)消费。此时生产者再次发送消息(挂掉45秒以后)会触发再平衡,将剩余两个消费者根据RoundRobin策略再次进行分配。

3 分区分配策略之Sticky

粘性分区定义:可以理解为分配的结果带有“粘性的”。即在执行一次新的分配之前,考虑上一次分配的结果,尽量少的调整分配的变动,可以节省大量的开销。
粘性分区是Kafka 从 0.11.x版本开始引入这种分配策略,首先会尽量均衡的放置分区到消费者上面,在出现同一消费者组内消费者出现问题的时候,会尽量保持原有分配的分区不变化。

//设置分区分配策略
properties.put(ConsumerConfig.PARTITION_ASSIGIIEINTLSTRATEGY_CONFI, "org.apache.kafka.clients.consumer.StickyAssignor");

如果再C0消费者挂掉之后生产者发送消息(挂掉以后45秒以内),那么本来有C0消费的0,1,2分区会重新分配给其他消费者(C1,C2)消费。此时生产者再次发送消息(挂掉45秒以后)会触发再平衡,将剩余两个消费者根据sticky策略再次进行分配。

注意:sticky和RoundRobin的不同点在于:RoundRobin是轮询分配,分配到不同消费者的分区会有一定的规律,sticky更重于均匀分配,分配到不同消费者的分区不一定会有规律。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

网页名称:kafka-consumer-分配策略-创新互联
分享链接:https://www.cdcxhl.com/article48/edpep.html

成都网站建设公司_创新互联,为您提供网站策划电子商务响应式网站外贸建站服务器托管微信公众号

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都seo排名网站优化