Service Fabric - динамическое управление ресурсами для экземпляра службы - PullRequest
0 голосов
/ 22 февраля 2019

TL; DR : есть ли способ динамически устанавливать параметры или политики ресурсов для ServicePackageResourceGovernancePolicy и / или ResourceGovernancePolicy, когда мы создаем новый экземпляр определенного ServiceType во время выполнения?

У нас есть сценарий использования для динамического управления ресурсами для каждого экземпляра службы (не типа).

Итак, в основном, у нас есть тип службы: VotingDataType .

Итак, вы описываете управление ресурсами в ApplicationManifest, , взятом из документов , вот пример:

<ApplicationManifest>
   ... 
   <ServiceManifestImport>
      <ServiceManifestRef ServiceManifestName="VotingDataPkg" ServiceManifestVersion="1.0.0" />
      ...  
      <!-- Set resource governance at the service package level. -->
      <ServicePackageResourceGovernancePolicy CpuCores="[CpuCores]" MemoryInMB="[Memory]"/>

      <!-- Set resource governance at the code package level. -->
      <ResourceGovernancePolicy CodePackageRef="Code" CpuPercent="10" MemoryInMB="[Memory]" BlockIOWeight="[BlockIOWeight]" 
                                MaximumIOBandwidth="[MaximumIOBandwidth]" MaximumIOps="[MaximumIOps]" MemoryReservationInMB="[MemoryReservationInMB]" 
                                MemorySwapInMB="[MemorySwapInMB]"/>

    </Policies>
  </ServiceManifestImport>
  ...
</ApplicationManifest

Теперь для каждого клиента моя служба пользовательского размещения создаст новуюэкземпляр VotingDataType.Однако с помощью некоторых метаданных, которые мы получаем до того, как собираемся создать экземпляр нового экземпляра, мы решаем, нужен ли ему для начала экземпляр большего размера.поэтому вместо предела 10% ЦП мы хотим установить предел ЦП в 20%.

Затем наша служба размещения будет использовать следующий метод для создания нового экземпляра этой службы VotingDataType.fabricClient.ServiceManager.CreateServiceAsync(...).Однако мы не можем настроить параметры для ResourceGovernancePolicy.

Есть ли способ динамически устанавливать параметры или политики ресурсов для ServicePackageResourceGovernancePolicy и / или ResourceGovernancePolicy, когда мы создаем новый экземпляр определенного ServiceType во время выполнения?

1 Ответ

0 голосов
/ 22 февраля 2019

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

В вашем случае подходит, если у вас есть одно именованное приложение (экземпляр) на каждого арендатора, даже еслиэто один и тот же AppType.Таким образом, вы развертываете один раз и создаете несколько служб с различной конфигурацией или версиями.

Лучше также использовать одно приложение для каждого клиента, поскольку вы можете обновлять их индивидуально, чтобы каждый клиент мог решить, когда он хочет применить обновление.

т.е.:

ApplicationTypes    
  ApplicationType  | Version
  ----------------------------
  SalesAppType       1.0
  SalesAppType       1.1

Applications (Named Applications)
  Application   | ApplicationType  | Version
  -------------------------------------------
  Ten1-SalesApp   SalesAppType       1.0
  Ten2-SalesApp   SalesAppType       1.0
  Ten3-SalesApp   SalesAppType       1.1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...