收款定制开发Kafka消费者分区分配策略

一:收款定制开发有四种收款定制开发分区分配策略

1.RoundRobin
2.Range
3.Sticky(粘性)
4.CooperativeSticky(收款定制开发合作者粘性)收款定制开发后面版本加的分配策略
修改kafka分区分配策略:partition.assignment.strategy= range+CooperativeStucky(默认值) 或 roundrobin,kafka收款定制开发可以同时使用多个分区分配策略。

二:RoundRobin策略详解

RoundRobin是针对所有topic分区。它是采用轮询分区策略,是把所有的partition和所有的consumer列举出来,然后按照hashcode进行排序,最后再通过轮询算法来分配partition给每个消费者。

三:Range策略详解

Range策略是kafka默认的消费者分区分配策略,它是针对topic维度的首先对同一个topic里面的分区按照序号进行排序,并对消费者按照字母顺序进行排序

如图,假如现在有7个分区,3个消费者,排序后分区的顺序是0-6,消费者排完序后是C0-C2。
通过partition数/consumer数来决定每个消费者应该消费几个分区,如果除不尽的话排名靠前的消费者将会多消息一个分区,上图所示为7/3,即优先每个消费者分别消费两个分区,还多出来一个分区则由C0消费。以此类推,当有8个分区时则前两个消费者分别消费3个分区,最后一个消费者消费2个分区。
缺点:容易产生数据倾斜,如果是针对少量的topic而言C0多消费一个分区的数据影响不大,但是针对成百上千个topic那么C0就要多消费成百上千的分区数。

四:Sticky策略详解

粘性分区定义:可以理解为分配的结果带有“粘性的”。即在执行一次新的分配之前,考虑上一次分配的结果。尽量少的调整分配的变动,可以节省大量的开销。
粘性分区是由Kafka从0.11x版本开始引入的分配策略,首先会尽量均衡的分配分区到消费者上面,在出现同一消费组内消费者出现问题的时候,会尽量保持原来的分配的分区不变。
初始分配分区的方法与Range相似,但是不同。还是拿7个分区3个消费者为例。消费者消费的分区依旧是3、2、2,但是不同与Range的是Range分区是排好序的,如上图C0分配的是partition0、partition1、partition2分区,但是粘性分区C0不一定就是指定这三个分区,而是随机的。

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发