Это немного описательно, поэтому, пожалуйста, потерпите меня.:)
В приложении, которое я пытаюсь создать, есть различные функциональные возможности продукта.Пользователи могут выбрать использование функций A, B, D, но не C. Способ, которым я создаю это, заключается в том, что каждая отдельная функциональность является службой (без сохранения состояния, я думаю о сохранении данных в Azure SQL).БД и предоставление REST API от каждого сервиса).Все сервисы в комплекте - это ApplicationType.Для каждого созданного клиента-клиента (рассматривайте это как общую учетную запись группы пользователей), я имею в виду создание нового конкретного экземпляра зарегистрированного ApplicationType с использованием TenantManagementService и вызов client.ApplicationManager.CreateApplicationAsync()
для экземпляра FabricClient
, чтобыУ меня может быть выделенный экземпляр приложения, запущенный на моих узлах для этого арендатора.Однако, как я уже упоминал, арендатор может выбрать подписку только на определенные функции, которые привязаны к подмножеству услуг.Если арендатор выбирает только службу A моего Приложения, остальные экземпляры службы, соответствующие функциям B, C, D, не должны бездействовать на узлах.
Я думал о создании акторов для каждой службы, носервисы, которые я создаю, не сохраняют состояния, и я хотел бы, чтобы их экземпляры активно работали на нескольких узлах для балансировки нагрузки, а не имели бы незанятые реплики сервисов с состоянием.
Подобно тому, что я делаю стипы приложений, т. е. порождающие типы приложений в качестве новых регистров арендатора, могу ли я порождать / удалять сервисы, как и когда арендатор хочет отказаться от использования функций продукта?
Вот что я пробовал: Iпопытался установить InstanceCount
0 для служб при упаковке моего приложения.В моих ApplicationParameters
XML-файлах:
<Parameters>
<Parameter Name="FeatureAService_InstanceCount" Value="0" />
<Parameter Name="FeatureBService_InstanceCount" Value="0" />
</Parameters>
Тем не менее, Service Fabric Explorer выводит сообщения при создании экземпляра приложения из такого типа приложения.Ошибка такова:
Но, с другой стороны, когда служба развернута в матрице, она дает мне возможность удалить ее специально, поэтому этот сценарий должен бытьдействительный.
Любые предложения приветствуются!
РЕДАКТИРОВАТЬ: Мое требование аналогично подходу, упомянутому здесь Андерсо - https://stackoverflow.com/a/35248349/1842699, Однако,Проблема, которую я специально пытаюсь решить, - загрузить экземпляр приложения с одной или несколькими упакованными службами с нулевым числом экземпляров!