【问题标题】:Service Fabric dynamic partitioningService Fabric 动态分区
【发布时间】:2016-12-14 21:12:28
【问题描述】:

所以我正在研究如何将 Service Fabric 用于一个非常大的应用程序。我需要的一件事是按名称分区的服务,这在应用程序清单级别似乎相当微不足道。

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

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

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

Service Fabric 是否可以做到这一点,如果可以,是否有任何相关文档,或者我应该查找的内容?

【问题讨论】:

    标签: azure-service-fabric


    【解决方案1】:

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

    您需要重新考虑您的模型。分区是为了分配数据,以便快速访问,以便读取和写入。但在同一个逻辑容器中。

    如果你想在 Service Fabric 中做一些多租户,你可以将一个应用程序多次部署到集群中。

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

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

    【讨论】:

    • 谢谢。我发现我也可以使用 FabricClient 创建服务实例,因此我不需要在后端使用 PowerShell。看起来这是要走的路。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2018-01-11
        • 2020-09-07
        • 2016-08-03
        • 2017-11-09
        • 2020-03-10
        • 2017-05-24
        • 1970-01-01
        • 2020-02-10
        • 2021-02-01
        相关资源
        最近更新 更多