ServiceFabric 中的 InstanceCount=1 是否表示“至少一个实例”或“不超过一个实例”?

Does InstanceCount=1 in ServiceFabric mean 'at least one instance' or 'no more than one instance'?

提问人:Rob Bell 提问时间:9/27/2023 更新时间:10/9/2023 访问量:102

问:

在 ServiceFabric 中,是否意味着“至少一个实例”或“不超过一个实例”?从我看到的文档来看,它不清楚,我有一个场景,我希望在任何时候最多运行一个应用程序实例。InstanceCount=1

azure-service-fabric 冗余

评论


答:

0赞 Imran 10/3/2023 #1

根据 tomvcassidyGithub 的说法,Service Fabric 中的实例计数=1 意味着至少有一个实例

当设置为 1 时,这意味着在任何给定时刻将创建并运行服务的一个实例。为了在实例失败或删除时将所需的实例计数保持为 1,Service Fabric 将自动创建一个新实例。InstanceCount

如果要确保在任何时候最多运行一个应用程序实例,可以将该属性设置为 1。InstanceCount

此配置可确保只有一个服务实例在运行,如果该实例失败或被删除,Service Fabric 将自动创建一个新实例,以保持所需的计数 1。

评论

0赞 Rob Bell 10/3/2023
您的答案似乎相互矛盾:InstanceCount=1 表示至少一个, InstanceCount=1 表示最多一个
0赞 Imran 10/3/2023
当 InstanceCount 设置为 1 时,这意味着在任何给定时刻都会创建一个正在运行的服务实例。如果要确保在任何时候最多运行一个应用程序实例,可以将 InstanceCount 属性设置为 1。
0赞 Rob Bell 10/4/2023
不过,答案的第一行显示“Service Fabric 中的实例计数 = 1 表示至少有一个实例”。这是错别字吗?
0赞 Matan Shabtay 10/9/2023 #2

将实例计数设置为 1 时,这意味着最终服务将只有 1 个实例,但在某些情况下,尤其是在服务启动期间,您将拥有多个实例。因此,它不是“在任何给定时间内不超过一个实例” 就我个人而言,我见过这样的情况:服务将启动,并且在所有节点上运行几秒钟,直到集群遵守实例计数和放置约束,并最终按照配置减少实例计数。 如果尝试使用此功能来实现在任何给定时间最多必须运行一次的业务逻辑,则还应在逻辑中实现分布式锁(例如,使用 Azure Blob 存储租约)。

https://learn.microsoft.com/en-us/dotnet/api/system.fabric.description.statelessservicedescription.instancecount?view=azure-dotnet

评论

0赞 Rob Bell 10/10/2023
您是否有任何关于“尤其是在服务启动期间”您会看到多个实例的文档?我能找到的唯一文档说 InstanceCount 定义了创建多少个副本:learn.microsoft.com/en-us/azure/service-fabric/...
1赞 Matan Shabtay 10/11/2023
不,我只在我自己的集群上看到过这种行为。如果您需要由文档支持的更准确的答案,我建议在 Azure 门户上打开支持案例,并要求他们也澄清文档。