Изменение количества экземпляров в потоке в Spring Cloud Data Flow не влияет

Я использую SCDF 2.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.instanceCount как новую версию, но всегда заменяется deployer.<appName>.count. Это очень сбивает с толку.

Может быть, кто-нибудь из команды SCDF сможет пролить свет на этот вопрос, чтобы определить, действительно ли это проблема?

Спасибо!

1 ответ

В deployer.<appName>.count=2- это ярлык в SCDF не только для создания экземпляра развертывания с начальным масштабированием, но он, безусловно, также автоматизирует настройку свойств привязки Spring Cloud Stream, поэтому все экземпляры-потребители могут фактически принадлежать к одной группе потребителей (см. документацию).

Это свойство также является обязательным при разделении на стороне производителя, поэтому мы будем знать, как разделить данные на основе экземпляров потребителя ниже по течению.

При этом мы не отслеживаем никаких изменений в свойстве "count" развертывателя как части stream updateрабочий процесс. Мы хотели реализовать новыйscale()операции (см.: https://github.com/spring-cloud/spring-cloud-deployer-kubernetes/issues/159), поэтому он будет использоваться за кулисами при изменении "счетчика". Однако это еще не реализовано. Не стесняйтесь поделиться своими примерами использования в проблеме - мы можем ее рассмотреть.

Однако пока вы можете использовать функции автомасштабирования платформы или масштабирования, поддерживаемые в kubectl или API K8s для масштабирования потребителей за пределами SCDF.