Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure service fabric 我应该在代码或清单文件中的何处添加ServicePlacementPreferPrimaryDomainPolicyDescription?_Azure Service Fabric - Fatal编程技术网

Azure service fabric 我应该在代码或清单文件中的何处添加ServicePlacementPreferPrimaryDomainPolicyDescription?

Azure service fabric 我应该在代码或清单文件中的何处添加ServicePlacementPreferPrimaryDomainPolicyDescription?,azure-service-fabric,Azure Service Fabric,我有一个跨区域的群集,我想指定首选域。问题是查看中的示例代码,我不知道serviceDescription从何而来。有人知道我应该在我的服务结构服务代码库中将这些代码放在哪里吗 另外,是否有类似的方法在ServiceFabric清单文件中指定它而不是代码更改(例如人们如何指定前端/后端位置) 谢谢,使用此代码更改服务说明: FabricClient fabricClient = new FabricClient(); StatefulServiceDescription serviceDescr

我有一个跨区域的群集,我想指定首选域。问题是查看中的示例代码,我不知道serviceDescription从何而来。有人知道我应该在我的服务结构服务代码库中将这些代码放在哪里吗

另外,是否有类似的方法在ServiceFabric清单文件中指定它而不是代码更改(例如人们如何指定前端/后端位置)


谢谢,

使用此代码更改服务说明:

FabricClient fabricClient = new FabricClient();
StatefulServiceDescription serviceDescription = new StatefulServiceDescription();
serviceDescription.PlacementConstraints = "(HasSSD == true && SomeProperty >= 4)";
await fabricClient.ServiceManager.CreateServiceAsync(serviceDescription);
(来源)

根据XSD,您可以将它们定义为xml,类似于放置约束

C:\Program Files\Microsoft SDK\Service Fabric\schemas\ServiceFabricsServiceModel.xsd

根据,您当然可以根据代码对其进行配置,如下所示:

FabricClient fabricClient = new FabricClient();
StatefulServiceDescription serviceDescription = new StatefulServiceDescription();
serviceDescription.PlacementConstraints = "(HasSSD == true && SomeProperty >= 4)";
// add other required servicedescription fields
//...
await fabricClient.ServiceManager.CreateServiceAsync(serviceDescription);
至于您关于从何处执行此操作的问题-根据您的需要,有几个选项:

  • 编写一个单独的应用程序,作为CI/CD部署管道的一部分运行(或通过powershell
    New ServiceFabricsService
    ) 这种方法的问题是,开发人员在每次部署后都必须运行它,这有点烦人-因此我更喜欢:
  • 编写一个默认实例化的无状态服务(即在
    ApplicationManifest.xml
    中的
    中放置一个条目)。在该服务中,您可以使用
    FabricClient
    、策略、指标实例化/修改放置约束,并通过应用程序参数/配置驱动这些约束
  • 通过API网关惰性地实例化服务。这对于分区/有状态服务(例如,如果您按租户进行分区)或您希望维护工作池(例如,
    partition\u id=random\u number%pool size
    )的服务尤其有效
还可以通过应用程序参数配置放置约束。不幸的是,这似乎不适用于安置政策(也可能不适用于两者)

如果您的需求很简单,那么声明式方法可能是最简单的!根据上面的链接,在应用程序清单文件中添加一个
[Stateless1\u InstanceCount]
参数,并将其置于默认服务下:

<DefaultServices>
  <Service Name="Stateless1">
    <StatelessService ServiceTypeName="Stateless1Type" InstanceCount="[Stateless1_InstanceCount]">
      <SingletonPartition />
      <PlacementConstraints>[Stateless1_PlacementConstraints]</PlacementConstraints>
    </StatelessService>
  </Service>
</DefaultServices>

[无状态1_位置约束]

Cool,xsd正是我想要的!如果我正在使用代码,我是否应该作为控制台应用程序编写并在服务部署后运行它?您可以使用小型控制台应用程序或PowerShell,并将其作为
SetupEntryPoint
运行。