Я запускаю приложение Service Fabric в локальном кластере разработки с "имитацией" 5 узлов на моем ПК.
В приложении есть общедоступная служба API без сохранения состояния с числом экземпляров, установленным в -1.
Я ожидаю увидеть 5 экземпляров службы без сохранения состояния в Service Fabric Explorer, но вижу только 1.
В приложении также есть служба субъекта с числом разделов, установленным в 10 (автоматически созданная конфигурацияVisual Studio).
Когда приложение развертывается в кластере разработки на моем ПК, в Service Fabric Explorer можно увидеть только один раздел.После того, как я имитирую «большую» нагрузку, а загрузка процессора и памяти моего ПК составляет около 90%, остается только один раздел службы актера.Я создал службу с состоянием с числом разделов, установленным в 5, чтобы проверить, не является ли что-то не так с моей средой, но он работает как ожидалось.
Это нормально для служб без сохранения состояния или что-то не так с моей конфигурацией.Является ли это поведение специфичным для кластера разработки, чтобы избежать таких вещей, как конфликт портов.
Как насчет службы субъекта.Согласно документам возможно динамическое масштабирование разделов, но количество разделов для службы субъекта не увеличивается даже при высокой нагрузке.Кроме того, в документах Actor ничего не упоминается о динамическом масштабировании разделов.
Related
Заранее спасибо!
РЕДАКТИРОВАТЬ: После некоторых тестов с различными конфигурациями я получил его работать.
Исходная конфигурация в ApplicaitonManifest.xml:
<Parameters>
...
<Parameter Name="HttpAPI_InstanceCount" DefaultValue="-1" />
<Parameter Name="SystemStatusConsumerActorService_PartitionCount"
DefaultValue="10" />
...
</Parameters>
<DefaultServices>
<Service Name="HttpAPI">
<StatelessService ServiceTypeName="HttpAPIType"
InstanceCount="[HttpAPI_InstanceCount]">
<SingletonPartition />
</StatelessService>
</Service>
<Service Name="SystemStatusConsumerActorService"
GeneratedIdRef="faad4d24-04db-4e06-8a1d-22bc6255c7fe|Persisted">
<StatefulService ServiceTypeName="SystemStatusConsumerActorServiceType" TargetReplicaSetSize="SystemStatusConsumerActorService_TargetReplicaSetSize]" MinReplicaSetSize="[SystemStatusConsumerActorService_MinReplicaSetSize]">
<UniformInt64Partition
PartitionCount="[SystemStatusConsumerActorService_PartitionCount]"
LowKey="-9223372036854775808"
HighKey="9223372036854775807" />
</StatefulService>
</Service>
</DefaultServices>
Конфигурация, которая работает:
<Parameters>
...
<Parameter Name="HttpAPIInstanceCount" DefaultValue="-1" />
<Parameter Name="SystemStatusConsumerActorServicePartitionCount"
DefaultValue="10" />
...
</Parameters>
<DefaultServices>
<Service Name="HttpAPI">
<StatelessService ServiceTypeName="HttpAPIType"
InstanceCount="[HttpAPIInstanceCount]">
<SingletonPartition />
</StatelessService>
</Service>
<Service Name="SystemStatusConsumerActorService"
GeneratedIdRef="faad4d24-04db-4e06-8a1d-22bc6255c7fe|Persisted">
<StatefulService ServiceTypeName="SystemStatusConsumerActorServiceType" TargetReplicaSetSize="SystemStatusConsumerActorService_TargetReplicaSetSize]" MinReplicaSetSize="[SystemStatusConsumerActorService_MinReplicaSetSize]">
<UniformInt64Partition
PartitionCount="[SystemStatusConsumerActorServicePartitionCount]"
LowKey="-9223372036854775808"
HighKey="9223372036854775807" />
</StatefulService>
</Service>
</DefaultServices>
Обратите внимание, что единственными различиями являются имена параметров:
HttpAPI_InstanceCount
изменен на
HttpAPIInstanceCount
SystemStatusConsumerActorService_PartitionCount
изменено на
SystemStatusConsumerActorServicePartitionCount