Azure service fabric StatefulServiceBase.RunAsync在启动期间在主服务器中调用了多次?

Azure service fabric StatefulServiceBase.RunAsync在启动期间在主服务器中调用了多次?,azure-service-fabric,service-fabric-stateful,Azure Service Fabric,Service Fabric Stateful,StatefulServiceBase.RunAsync(CancellationToken)方法在启动期间是否在主中调用了多次 文档([1]&[2])中说,此方法将仅在主方法中调用,而与启动期间调用的次数无关 参考文献: [1] [2] 建议: RunAsync方法作为一个处理循环实现,并且仅当副本是具有写入状态的主副本时才会调用 但它没有明确说明的是,RunAsync()不仅在启动时被调用,而且在ChangeRole事件中将次副本升级到主时也被调用 从技术上讲,当副本成为主副本时,它在启动

StatefulServiceBase.RunAsync(CancellationToken)方法在启动期间是否在主中调用了多次

文档([1]&[2])中说,此方法将仅在主方法中调用,而与启动期间调用的次数无关

参考文献:
[1]
[2]

建议:

RunAsync
方法作为一个处理循环实现,并且仅当副本是具有写入状态的主副本时才会调用

但它没有明确说明的是,
RunAsync()
不仅在启动时被调用,而且在
ChangeRole
事件中将副本升级到时也被调用

从技术上讲,当副本成为主副本时,它在启动时会被调用一次,如果出于任何原因,它被
ChangeRole
事件降级到辅助副本,然后再次升级为主副本,它将再次被调用,每次取消令牌都将被取消,以便在新调用之前传播更改

总之,它通常被调用一次,但不应该被期望这样做,因为它可能被调用多次,如果其中的逻辑期望总是运行一次,这将是一个问题

另一个常见问题是
CreateServiceReplicaListeners()
也可以多次调用,原因与上述相同,但这可能是一个更大的问题,因为辅助副本也调用
CreateServiceReplicaListeners()
,一个常见错误是在其中添加逻辑,假设只调用一次

文档和显示了有关上述场景问题的更多详细信息


是上述大多数逻辑的源文件。

只调用一次。回答不错!我只加了一点。这些文档并非100%准确(以下是GitHub for和服务的问题)。在更新文档之前,您可以使用博客文章中的生命周期部分。