【问题标题】:Decrease upgrade time when changing application parameters for a Service Fabric Application更改 Service Fabric 应用程序的应用程序参数时减少升级时间
【发布时间】:2017-03-15 15:42:24
【问题描述】:

我有一个多租户场景(每个租户都有自己的 Service Fabric 应用程序实例),租户可以激活/停用单个 Service Fabric 服务(我们将服务作为扩展概念在 UI 中向租户公开)。

示例:租户#1 激活电子邮件扩展,这将激活电子邮件 Service Fabric 服务。

要求:

  1. 当租户激活扩展时,他们应该能够提供配置(例如:smtpserver)
  2. 租户应该能够快速激活扩展(大约有 20 个不同的扩展)
  3. 扩展程序应该在几秒钟内就可以运行

当前实施

扩展程序的激活按以下方式处理(使用上面的电子邮件示例):

  1. 租户通过 UI 激活电子邮件扩展并向 smtpserver 提供地址
  2. 电子邮件服务是在租户的应用程序中创建的
  3. 应用程序升级被触发,将提供的 smtpserver 配置添加到应用程序参数列表中
  4. Service Fabric 开始滚动升级
  5. 时间飞逝(在我们的例子中是几分钟)
  6. 应用程序已升级,电子邮件服务已启动并运行

上述场景工作,服务启动并可以读取 smtpserver 配置。然而,租户的体验并不是最佳的。

问题

在升级过程中无法激活其他服务,因为在 Service Fabric 的持续升级过程中无法更改配置。

因此,租户必须等到应用程序升级(需要几分钟)才能再次激活/停用扩展。如果租户想要激活 10 个扩展,他们将不得不等待很长时间。

我尝试了以下方法来减少升级时间:

  1. 将 HealthCheckStableDurationInMilliseconds 设置为 0
  2. 将 HealthCheckWaitDurationInMilliseconds 设置为 0

升级过程仍然需要很长时间(大约一分钟)。

问题

由于我们只想更改 Service Fabric 应用程序参数,有没有其他方法可以加快升级过程或完全解决它?

注意:由于技术限制,我们无法批量激活扩展程序。每个扩展程序必须同时激活一个。

【问题讨论】:

    标签: azure-service-fabric


    【解决方案1】:

    由于您能够在激活和停用时动态创建和删除服务,您是否考虑过将所需的配置作为初始化数据参数传递给服务创建?

    https://docs.microsoft.com/en-us/dotnet/api/system.fabric.description.servicedescription#System_Fabric_Description_ServiceDescription_InitializationData

    请注意,一旦服务创建,您就无法更改初始化数据。

    【讨论】:

    • 很好的建议,感谢您抽出宝贵的时间!但是,由于用户需要能够重新配置服务(扩展),在这种情况下这对我们不起作用。主要问题之一是整个应用程序在更改配置时进入“升级状态”。您是否知道是否有任何方式只触发单个服务而不是整个应用程序的升级以(也许)加快速度?
    猜你喜欢
    • 2016-07-26
    • 2023-04-04
    • 2019-01-10
    • 2019-04-25
    • 2019-05-09
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    相关资源
    最近更新 更多