2016-08-09 47 views
1

因此,我正在研究如何将Service Fabric用于非常大的应用程序。我需要的一件事是按名称进行分区的服务,这在应用程序清单级别看起来相当微不足道。服务结构动态分区

但是,我真的希望能够在不需要重新发布应用程序的情况下即时添加和删除命名分区。

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

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

服务结构是否可行?如果有的话,是否有关于此的任何文档,或者我应该寻找的东西?

回答

6

每个分区代表我们的承租人的等价物,我们希望有一个后端管理应用程序来添加新承租人。

您需要重新考虑您的模型。分区用于分配数据,以便快速读取和读取数据。但在同一个逻辑容器内。

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

从Visual Studio看来,你只能有一个应用程序的实例。这是因为在ApplicationManifest.xml中定义了DefaultServices。这对于在本地服务结构集群上开发是可以的。对于生产,您可能想考虑使用powershell部署应用程序,这将开放多次使用每个实例的设置部署相同应用程序的可能性(如:租户名称,安全性...)

而且不仅应用程序可以多次部署,也是有状态/无状态的服务。所以你可以有一个应用程序,并为每个租户部署一个特定类型的服务。可以通过Service Fabric内的命名服务找到服务,请参阅FabricClient类获取更多相关信息。

+1

谢谢。我发现我也可以使用FabricClient创建服务实例,所以我不需要在后端弄乱PowerShell。看起来这是要走的路。 – Gerald

4

无法更改现有应用程序的分区计数。 从https://azure.microsoft.com/en-us/documentation/articles/service-fabric-concepts-partitioning/#plan-for-partitioning(重点煤矿):

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

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

2

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