这有点描述性,所以请多多包涵。:)
在我尝试构建的应用程序中,产品具有不同的功能。用户可以选择加入功能 A、B、D 但不是 C。我构建这个的方式是,每个不同的功能都是一个服务(无状态,我正在考虑将数据存储在 Azure SQL数据库并从每个服务公开 REST API)。将所有服务捆绑在一起是一个 ApplicationType。对于创建的每个客户租户(将其视为一组用户的共享帐户),我正在考虑使用 TenantManagementService 创建注册的 ApplicationType 的新具体实例并client.ApplicationManager.CreateApplicationAsync()
调用FabricClient
实例,以便我可以在我的节点上为该租户运行一个专用的应用程序实例。但是,正如我所提到的,租户可以选择仅选择映射到服务子集的特定功能。如果租户仅选择我的应用程序的服务 A,则与功能 B、C、D 对应的其余服务实例不应在节点上空闲运行。
我想为每个服务创建参与者,但我正在创建的服务是无状态的,我希望它们的多个实例在多个节点上主动运行以进行负载平衡,而不是让有状态服务的空闲副本。
与我对应用程序类型所做的类似,即在新租户注册时生成应用程序类型,我可以在租户想要选择加入/退出产品功能时生成/删除服务吗?
这是我尝试过的:我InstanceCount
在打包我的应用程序时尝试将服务设置为 0。在我的ApplicationParameters
XML 文件中:
<Parameters>
<Parameter Name="FeatureAService_InstanceCount" Value="0" />
<Parameter Name="FeatureBService_InstanceCount" Value="0" />
</Parameters>
但是,在使用此类应用程序类型实例化应用程序时,Service Fabric Explorer 会出现问题。错误是这样的:
但另一方面,当服务部署在结构上时,它给了我一个选项来专门删除它,所以这个场景应该是有效的。
欢迎任何建议!
编辑:我的要求类似于 anderso 在此处提到的方法-https://stackoverflow.com/a/35248349/1842699 ,但是,我特别要解决的问题是上传创建一个应用程序实例或更多实例计数为零的打包服务!