0

我正在将 SCDF2.2.1.RELEASE与 Skipper Kubernetes 部署程序一起使用,2.1.2.RELEASE并且我正面临一种奇怪的行为,我想了解它是否真的是有意的、一个问题或只是一个无功能。

当我部署流时,我最初可以按照以下模式指定每个元素的副本数:

deployer.<appName>.count=2

这很有效,因为我指出的实例都部署到了 Kubernetes 中。然后,如果我回到流的定义,我会看到添加了一个新属性,可能源自deployer.<app>.count我提供的属性:

app.<appName>.spring.cloud.stream.instanceCount=2

但是,现在还不清楚如何更新这样的计数,因为如果我尝试将deployer.<appName>.count属性更改为不同的东西,例如1(不更改其他派生属性),那么 SCDF 会回复错误并且什么也不做:

Package to upgrade has no difference than existing deployed/deleted package. Not upgrading.

然后,如果我也更改了派生属性app.<appName>.spring.cloud.stream.instanceCount=1,则会发生意外行为:SCDF 为特定应用程序生成一个新版本,但仍然使用原始2实例启动它,完全忽略了新值。如果我检查流的新定义,它会显示未同步的值:

app.<appName>.spring.cloud.stream.instanceCount=1
deployer.<appName>.count=2

因此,我不确定这是预期行为还是只是尚未实现的问题或事件,因此 SCDF 只是app.<appName>.spring.cloud.stream.instanceCountdeployer.<appName>.count. 这很令人困惑。

可能来自 SCDF 团队的任何人都可以阐明这件事,以确定这是否真的是一个问题?

谢谢!

4

1 回答 1

0

deployer.<appName>.count=2是 SCDF 中的一种快捷方式,不仅可以通过初始横向扩展来实例化部署,而且还可以自动配置 Spring Cloud Stream 绑定属性,因此消费者实例可以有效地属于同一个消费者组(请参阅文档) .

这个属性也是生产者侧分区时的要求,所以我们将知道如何根据下游消费者实例对数据进行分区。

stream update尽管如此,作为工作流程的一部分,我们不会跟踪对部署者的“计数”属性的任何更改。我们想实现一个新的scale()操作(参见:spring-cloud/spring-cloud-deployer-kubernetes/issues/159),所以当“计数”改变时,它将在幕后使用。不过,它还没有实施。随时在问题中分享您的用例 - 我们可以对其进行审查。

但是,目前,您可以使用平台的自动缩放kubectl或 K8s API 中支持的缩放功能来缩放 SCDF 之外的消费者。

于 2019-09-16T18:01:01.007 回答