Подробнее о instanceCount
и instanceIndex
можно прочитать в справочном руководстве SCSt .
. Здесь приведена демонстрация использования этих свойств.
Если вас не интересует сценарий многораздельной потоковой передачи и вы заинтересованы только в распараллеливании «вычисления», вы просто масштабируете количество экземпляров.
В отличие от реализаций, специфичных для облачной среды выполнения, в Local-сервере SCDF, однако, отсутствует поддержка масштабирования «среды выполнения», но вы можете развернуть поток с количеством экземпляров, зависящих от приложения.
Например, в приведенном выше примере мы развертываем поток с именем foo
с deployer.appender.count=3
.SCDF развернет 3 экземпляра приложения appender
, и по умолчанию все экземпляры будут конкурировать за сообщения.Следовательно, они будут в автоматическом состоянии с балансировкой нагрузки для распараллеливания вычислительных операций.
Все это говорит о том, что, просто масштабируя пользовательские экземпляры, вы все равно не сможете достичь желаемой пропускной способности.Возможно, вам придется настроить предварительную выборку, параллелизм и другие пользовательские конфигурации Rabbit, чтобы максимизировать их для своей среды.В качестве альтернативы вы можете использовать инструмент тестирования производительности Rabbit , чтобы измерить его сырую пропускную способность и сравнить его с бизнес-логикой, встроенной в рабочую нагрузку SCSt / SCDF.
ОБНОВЛЕНИЕ
Кроме того, когда вы используете SCDF с Skipper, у вас будет видимость всей автоматизации переопределений свойств потоковой передачи, предоставленных SCDF.
Вот пример вывода для appender
приложения.
dataflow:>stream manifest --name foo
"apiVersion": "skipper.spring.io/v1"
"kind": "SpringCloudDeployerApplication"
"metadata":
"name": "appender"
"spec":
"resource": "https://github.com/sabbyanandan/partitions/raw/master/jars/appender"
"resourceMetadata": "https://github.com/sabbyanandan/partitions/raw/master/jars/appender:jar:metadata:0.0.1-SNAPSHOT"
"version": "0.0.1-SNAPSHOT"
"applicationProperties":
"spring.metrics.export.triggers.application.includes": "integration**"
"spring.cloud.dataflow.stream.app.label": "appender"
"spring.cloud.stream.instanceCount": "3"
"spring.cloud.stream.metrics.key": "foo.appender.${spring.cloud.application.guid}"
"spring.cloud.stream.bindings.input.group": "foo"
"spring.cloud.stream.metrics.properties": "spring.application.name,spring.application.index,spring.cloud.application.*,spring.cloud.dataflow.*"
"spring.cloud.stream.bindings.output.producer.requiredGroups": "foo"
"spring.cloud.dataflow.stream.name": "foo"
"spring.cloud.stream.bindings.output.destination": "foo.appender"
"spring.cloud.dataflow.stream.app.type": "processor"
"spring.cloud.stream.bindings.input.consumer.partitioned": "true"
"spring.cloud.stream.bindings.input.destination": "foo.fruits"
"deploymentProperties":
"spring.cloud.deployer.indexed": "true"
"spring.cloud.deployer.count": "3"
"spring.cloud.deployer.group": "foo"