【问题标题】:Save state in OnDeactivateAsync在 OnDeactivateAsync 中保存状态
【发布时间】:2016-08-22 15:14:27
【问题描述】:

我的 Service Fabric 演员可以在其工作期间在内存中创建一些大型数据结构。我不想在每个方法调用结束时更新可靠的集合。 我可以仅在 OnDeactivateAsync 方法中通过 StateManager 保存我的演员状态并在 OnActivateAsync 方法中恢复它吗?在这种情况下我可以失去状态吗?

【问题讨论】:

  • 您是否担心垃圾收集器会收集存储在 Actor 对象中但不在 Actor 状态中的变量?或者您不确定是否可以更改 OnDeactivateAsync 和 OnActivateAsync 中的状态?
  • @cassandrad 我知道可以在 OnDeactivateAsync 中保存状态,但是否推荐在代码中保存状态?我以前每次更改状态时都会保存状态,但我认为当方法调用频繁且状态大小很大时,这种方法会在集群上造成低效负载。
  • 如果参与者或其底层服务或节点崩溃,您将丢失数据。如果您可以负担松散状态或可以在 Actor ActivateAsync 上重建它,您可以将该结构保留为类成员。 (就像在普通的 poco 中一样)
  • @LoekD 这很正确,您应该将其发布为答案。
  • itellisense 工具提示告诉“不应从此方法调用状态更改等 Actor 操作”。而且我这样做时也会遇到不一致的行为。

标签: azure-service-fabric


【解决方案1】:

如果参与者、其底层服务或节点崩溃,您将丢失数据。如果您可以负担松散状态或可以在 Actor ActivateAsync 上重建它,您可以将该结构保留为类成员。 (就像在普通的 poco 中一样)

(作为anwser发布)

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 2011-10-13
    • 2012-01-14
    • 2018-10-25
    • 2014-03-28
    • 1970-01-01
    相关资源
    最近更新 更多