从源码中理解spring cloud kafka stream 是如何分配kafka的partitions给不同的instance的

首先,kafka的topic是由多个partitions物理分隔的。假设topic: testIn,有8个partitions

其次,我们编写的springcloud kafka stream程序,打成jar包后,可以部署多个不同的实例instances,假设部署了3个instance。

那么这3个instance是怎么分配这8个partitions的呢?

spring.cloud.stream.kafka.bindings.input.consumer.autoRebalanceEnabled=true时(默认),多个实例会自动均衡

的分配partitions,由ConsumerCoordinator来自动协调,不用您操心了(跟instanceCount 和instanceIndex 没关系了,但是concurrency还是同理的), 当设置成false后:

主要是通过consumer的4个参数(org.springframework.cloud.stream.binder.ConsumerProperties)来决定的:


spring.cloud.stream.bindings.input.consumer.partitioned=true

准备启动多少个实例

spring.cloud.stream.bindings.input.consumer.instanceCount =3

该实例编号index,从0开始到instanceCount -1

spring.cloud.stream.bindings.input.consumer.instanceIndex =0

每个实例中启动多少个kafka consumer

spring.cloud.stream.bindings.input.consumer.concurrency  =1


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值