您现在的位置是:主页 > news > 六安商业网站建设费用/百度指数关键词搜索趋势

六安商业网站建设费用/百度指数关键词搜索趋势

admin2025/5/2 15:40:56news

简介六安商业网站建设费用,百度指数关键词搜索趋势,php网站开发要学什么,asp.ney旅游信息网站下载 简洁一 kafka的消费策略 1、一个consumer group中有多个consumer组成,一个 topic有多个partition组成,现在的问题是,到底由哪个consumer来消费哪个partition的数据。 2、Kafka有四种主流的分区分配策略: Range、RoundRobin、Sticky、C…

六安商业网站建设费用,百度指数关键词搜索趋势,php网站开发要学什么,asp.ney旅游信息网站下载 简洁一 kafka的消费策略 1、一个consumer group中有多个consumer组成,一个 topic有多个partition组成,现在的问题是,到底由哪个consumer来消费哪个partition的数据。 2、Kafka有四种主流的分区分配策略: Range、RoundRobin、Sticky、C…

一 kafka的消费策略

1、一个consumer group中有多个consumer组成,一个 topic有多个partition组成,现在的问题是,到底由哪个consumer来消费哪个partition的数据
2Kafka有四种主流的分区分配策略: RangeRoundRobinStickyCooperativeSticky
可以通过配置参数partition.assignment.strategy,修改分区的分配策略。默认策略是Range + CooperativeStickyKafka可以同时使用 多个分区分配策略。
3.策略判断参数

4.执行流程

1. 每个consumer都 发送JoinGroup请求

2.选出一个 consumer作为leader
3.把要消费的topic情况 发送给leader 消费者
4.leader会负 责制定消费方案
5.把消费方案发给coordinator
6.Coordinator就把消费 方案下发给各个consumer
7.每个消费者都会和coordinator保持心跳(默认3s),一旦超时 session.timeout.ms=45s),该消费者会被移除,并触发再平衡;或者消费者处理消息的过长(max.poll.interval.ms5分钟),也会触发再平衡

二   Range分区策略

2.1 range分区策略

Range 是对每个 topic 而言的。 首先对同一个 topic 里面的分区按照序号进行排序,并
消费者按照字母顺序进行排序
假如现在有 7 个分区,3 个消费者,排序后的分区将会 是0,1,2,3,4,5,6;消费者排序完之后将会是C0,C1,C2。 例如,7/3 = 2 1 ,除不尽,那么 消费者 C0 便会多 消费 1 个分区。 8/3=22,除不尽,那么C0C1分别多 消费一个。 通过 partitions/consumer来决定每个消费者应该
消费几个分区。如果除不尽,那么前面几个消费者将会多 消费 1 个分区。
分区分配策略之Range
注意:如果只是针对 1 topic 而言,C0消费者多消费1 个分区影响不是很大。但是如果有 N 多个 topic,那么针对每 个 topic,消费者 C0都将多消费 1 个分区,topic越多,C0消 费的分区会比其他消费者明显多消费 N 个分区。
容易产生数据倾斜!

 

2.2 案例分析

1.修改主题 first 7 个分区。注意:分区数可以增加,但是不能减少。

bin/kafka-topics.sh --bootstrap-server  hadoop102:9092 --alter --topic first --partitions 7
2.复制 CustomConsumer 类,创建 CustomConsumer2。这样可以由三个消费者
CustomConsumerCustomConsumer1CustomConsumer2 组成消费者组,组名都为“test”,
同时启动 3 个消费者。
3.启动 CustomProducer 生产者,发送 500 条消息,随机发送到不同的分区。
说明:Kafka 默认的分区分配策略就是 Range + CooperativeSticky,所以不需要修改策
4.观看 3 个消费者分别消费哪些分区的数据。
0号消费者

 1号消费者

2号消费者

 分析:

1).停止掉 0 号消费者,快速重新发送消息, 然后观看结果(45s 以内,越快越好)。
1 号消费者:消费到 34 号分区数据。
2 号消费者:消费到 56 号分区数据。
0 号消费者的任务会整体被分配1 号消费者或者 2 号消费者。
说明:0 号消费者挂掉后,消费者组需要按照超时时间 45s 来判断它是否退出,所以需
要等待,时间到了 45s 后,判断它真的退出就会把任务分配给其他 broker 执行。

 2)45s 以后,再次重新发送消息观看结果

1 号消费者:消费到 0123 号分区数据。
2 号消费者:消费到 456 号分区数据。
说明:消费者 0 已经被踢出消费者组,所以重新按照 range 方式分配。

三   RoundRobin分区策略

3.1 分区策略

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

 3.2 案例

1.修改之前的3个消费者,消费策略:依次在 CustomConsumerCustomConsumer1CustomConsumer2 三个消费者代 码中修改分区分配策略为 RoundRobin

 2.重启 3 个消费者,重复发送消息的步骤,观看分区结果。

消费者0:

消费者1:

 消费者2:

分析:

1)停止掉 0 号消费者,快速重新发送消息,然后观看结果(45s 以内,越快越好)。
1 号消费者:消费到 25 号分区数据
2 号消费者:消费到 3、6、0号分区数据
0 号消费者的任务会按照 RoundRobin 的方式,把数据轮询分成 1 、4号分区数据,
分别由 1 号消费者或者 2 号消费者消费。
说明:0 号消费者挂掉后,消费者组需要按照超时时间 45s 来判断它是否退出,所以需
要等待,时间到了 45s 后,判断它真的退出就会把任务分配给其他 broker 执行
2)45s 以后,再次重新发送消息观看结果。
1 号消费者:消费到 0246 号分区数据
2 号消费者:消费到 135 号分区数据
说明:消费者 0 已经被踢出消费者组,所以重新按照 RoundRobin 方式分配。

 四   Sticky 以及再平衡

 4.1 粘性分区

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

4.2 案例

设置主题为 first7 个分区;准备 3 个消费者,采用粘性分区策略,并进行消费,观察
消费分配情况。然后再停止其中一个消费者,再次观察消费分配情况
1.修改分区分配策略为粘性。
注意:3 个消费者都应该注释掉,之后重启 3 个消费者,如果出现报错,全部停止等 会再重启,或者修改为全新的消费者组。
2.使用同样的生产者发送 500 条消息。可以看到会尽量保持分区的个数近似划分分区
0号消费者

1号消费者

 2号消费者

 分析:

1)停止掉 0 号消费者,快速重新发送消息,然后观看结果(45s 以内,越快越好)。
1 号消费者:消费到 253 号分区数据。
2 号消费者:消费到 46 号分区数据。
0 号消费者的任务会按照粘性规则,尽可能均衡的随机分成 0 1 号分区数据,分别
1 号消费者或者 2 号消费者消费。
说明:0 号消费者挂掉后,消费者组需要按照超时时间 45s 来判断它是否退出,所以需
要等待,时间到了 45s 后,判断它真的退出就会把任务分配给其他 broker 执行。
(2)45s 以后,再次重新发送消息观看结果
1 号消费者:消费到 235 号分区数据。
2 号消费者:消费到 0146 号分区数据。
说明:消费者 0 已经被踢出消费者组,所以重新按照粘性方式分配。