Service Fabric动态分区

时间:2016-08-09 00:22:37

标签: azure-service-fabric

所以我正在研究如何将Service Fabric用于非常大的应用程序。我需要做的一件事是一个按名称划分的服务,这在应用程序清单级别看起来相当简单。

但是,我真的希望能够动态添加和删除命名分区,而无需重新发布应用程序。

每个分区代表我们相当于租户,我们希望有一个后端管理应用程序来添加新租户。

每个分区都是一个长期运行的应用程序,它会启动使用自定义协议的TCP服务器,我需要能够从群集中按名称查询地址。

这是否可以通过Service Fabric实现,如果有的话,是否有任何关于此的文档,或者我应该寻找的内容?

3 个答案:

答案 0 :(得分:6)

  

每个分区代表我们相当于租户,我们希望有一个后端管理应用程序来添加新租户。

您需要重新考虑您的模型。分区用于分发数据,因此可以快速访问,以进行读写。但是在同一个逻辑容器中。

如果要在Service Fabric中执行多租户,可以多次将应用程序部署到群集。

从Visual Studio中,您似乎只能拥有一个Application实例。这是因为在ApplicationManifest.xml中定义了DefaultServices。这可以在本地Service Fabric集群上进行开发。对于生产,您可能需要考虑使用powershell部署应用程序,这将为每个实例的设置(例如:租户名称,安全性......)多次部署相同的应用程序提供了可能性。

不仅可以多次部署应用程序,还可以部署有状态/无状态服务。因此,您可以拥有一个应用程序,并为每个租户部署某种类型的服务。可以通过Service Fabric中的命名服务找到服务,有关详细信息,请参阅FabricClient类。

答案 1 :(得分:4)

无法更改现有应用程序的分区计数。 来自https://azure.microsoft.com/en-us/documentation/articles/service-fabric-concepts-partitioning/#plan-for-partitioning(强调我的):

  

在极少数情况下,您最终可能需要比最初选择的分区更多的分区。由于您无法在事后更改分区计数,因此您需要应用一些高级分区方法,例如创建相同服务类型的新服务实例。您还需要实现一些客户端逻辑,根据客户端代码必须维护的客户端知识,将请求路由到正确的服务实例。

我们鼓励您进行前期容量规划以确定您需要的最大分区数 - 如果您最终需要更多分区,则需要实施一些特殊的客户端处理来应对。

答案 2 :(得分:2)

我们遇到了同样的问题,最终为每个租户创建了一个服务实例。这很容易做到,并且可以扩展到任意数量的租户。