Service Fabric Actor 备份适用于 1 个参与者,而其他所有参与者都失败

Posted

技术标签:

【中文标题】Service Fabric Actor 备份适用于 1 个参与者,而其他所有参与者都失败【英文标题】:Service Fabric Actor backup works on 1 actor and fail on all the others 【发布时间】:2020-01-03 19:53:31 【问题描述】:

我有一个 SF 应用程序,在一个公共项目中部署了 5 个参与者。我需要备份这些actors的状态。

现在我在一个单节点开发集群上。 我按照文档说明进行操作,1 个演员完美地工作,备份和恢复。当我尝试对其他演员做同样的事情时,备份失败。失败演员的演员服务没有附加到我的扩展演员服务,而是附加到基础服务,所以当我尝试调用我的备份逻辑时,我得到“接口未实现”异常。

如果我单步调试演员方法并观察 ActorService 属性,我会确认它没有附加到我的扩展类,它使用的是基类:

Microsoft.ServiceFabric.Actors.Runtime.ActorService

代替工作的演员具有我的扩展类类型的 ActorService:

ExtActorService.MyActorService

我为所有演员做完全相同的事情,为什么有些没有在我的自定义类中注册?

【问题讨论】:

【参考方案1】:

我自己解决了这个问题。 代码是正确的,是 Visual Studio 没有将更新的包正确发布到集群。即使由于某种原因我没有构建错误,VS 也会将相同的旧包发布到集群。我删除了集群管理器上的整个项目并在 VS 中重建它,然后再次部署,此时所有参与者的行为都正确并进行备份和恢复。问题解决了。

【讨论】:

以上是关于Service Fabric Actor 备份适用于 1 个参与者,而其他所有参与者都失败的主要内容,如果未能解决你的问题,请参考以下文章

Service Fabric Actor 计时器性能影响

Service Fabric Actor 订阅 Azure 服务总线主题

从 .Net Core Stateless Service 调用 .Net 框架 Service Fabric Actor

同一个 Service Fabric Actor 应用程序中是不是有大量的 Actor?

Service Fabric 运行时未从 Actor 服务实例回收未使用的内存

通过 URI 调用 Service Fabric Actor Service 时找不到 V2Listener