更改Service Fabric应用程序的应用程序参数时,减少升级时间

时间:2017-03-01 09:47:17

标签: azure-service-fabric

我有一个多租户方案(每个租户都有自己的Service Fabric应用程序实例)租户可以激活/停用各个Service Fabric Services(我们将服务作为扩展概念公开给UI中的租户)。 / p>

示例:租户#1激活电子邮件扩展,该扩展将激活电子邮件服务架构服务。

要求:

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

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

    1. 租户通过用户界面激活电子邮件扩展程序并将地址提供给smtpserver
    2. 电子邮件服务在租户的应用程序中创建
    3. 触发应用程序升级,将提供的smtpserver配置添加到应用程序参数列表
    4. Service Fabric开始滚动升级
    5. 时光飞逝(在我们的情况下是几分钟)
    6. 应用程序已升级,电子邮件服务已启动并正在运行
    7. 上面的方案工作,服务启动并可以读取smtpserver配置。然而,租户的经验并不是最佳的。

      问题

      在升级期间,由于在Service Fabric中正在进行升级期间无法更改配置,因此无法激活其他服务。

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

      我尝试过以下操作来缩短升级时间:

      1. 将HealthCheckStableDurationInMilliseconds设置为0
      2. 将HealthCheckWaitDurationInMilliseconds设置为0
      3. 升级过程仍然需要很长时间(大约一分钟)。

        问题

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

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

1 个答案:

答案 0 :(得分:1)

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

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

请注意,创建服务后无法更改初始化数据。