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