【问题标题】:Restrict to one service instance within all the service fabric nodes限制在所有服务结构节点中的一个服务实例
【发布时间】:2019-09-19 10:41:25
【问题描述】:

我有一个无状态服务结构服务,它基本上以指定的时间间隔进行批处理。因此,拥有多个实例会使事情变得复杂,因为每个实例都会尝试执行相同的批处理作业。

我非常想运行一个批处理。目前我已在 ApplicationManifest.xml 中将此服务的 InstanceCount 设置为 1。如果有多个节点会发生什么?我还会有这个服务的单个实例吗?或者我如何确保该服务具有单个实例,而不管节点/分区的数量是多少?

【问题讨论】:

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


    【解决方案1】:

    目前我已在 ApplicationManifest.xml 中将此服务的 InstanceCount 设置为 1。如果有多个节点会发生什么?我还会有这个服务的单个实例吗?

    如果有多个节点,则只有一个将包含主要的活动实例。其他节点可能会托管将在需要时接管的副本,例如当主实例所在的节点出现故障时。

    无论节点/分区的数量如何,我如何确保该服务具有单个实例?

    我们在答案的第一部分涵盖了多个节点。关于分区:无状态服务只有 1 个分区,因此它对您的问题不起作用。

    更多背景资料请阅读the docs about the service lifecycleabout replica lifecycles

    【讨论】:

    • 感谢您的解释。主实例和副本是否有可能同时处于活动状态?就我而言,我看到批处理在特定时间间隔内多次完成。所以想知道这是否是由于多个实例造成的。
    • 不,不应该。您的代码是否位于RunAsync 中,您是否尊重取消令牌?否则添加一些日志,将 run 的调用与实例 ID 一起记录。
    • 再次感谢。是的代码在 RunAsync 中并且没有使用取消令牌。我刚刚记录了实例 ID,让我们看看会发生什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多