【问题标题】:Stateless Worker service in Service Fabric restarted in the same processService Fabric 中的 Stateless Worker 服务在同一进程中重新启动
【发布时间】:2021-11-03 05:29:59
【问题描述】:

我有一个无状态服务,它从 Azure 队列中提取消息并对其进行处理。该服务还启动一些负责清理操作的线程。我们最近遇到了一个问题,这些线程在理想情况下应该在服务关闭时被终止继续保持活动状态(肯定是我们的服务关闭过程中的一个错误)。

进一步查看日志,似乎 RunAsync 方法取消令牌收到了取消请求,随后在 同一进程 中注册了 @987654323 中的无状态服务的新实例@ 已创建。

在关闭当前实例后,Service Fabric 是否可以重复使用相同的进程来启动无状态服务的新实例。

服务结构文档https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-hosting-model 似乎确实建议可以在同一进程上托管不同的服务,但我找不到其中提到的上述行为。

【问题讨论】:

    标签: azure-service-fabric service-fabric-stateless


    【解决方案1】:

    在共享进程模型中,每个节点上的每个ServicePackage 实例都有一个进程。添加或替换服务将重用现有流程。

    这样做是为了节省运行服务的节点上的一些(进程级)开销,因此托管更具成本效益。此外,它还支持服务的端口共享。

    您可以通过在应用程序清单中配置“独占进程”模式来更改此(默认)行为,这样每个副本/实例都将在单独的进程中运行。

    <Service Name="VotingWeb" ServicePackageActivationMode="ExclusiveProcess">
    

    正如您所提到的,您可以监视CancellationToken 以中止单独的工作线程,以便它们可以在服务停止时停止。

    更多信息about the app model hereconfiguring process activation mode

    【讨论】:

      猜你喜欢
      • 2018-09-15
      • 2020-04-06
      • 2019-10-16
      • 1970-01-01
      • 2017-06-11
      • 2019-02-02
      • 2016-02-04
      • 2019-11-19
      • 2017-06-29
      相关资源
      最近更新 更多