Azure service fabric 在OnActivateAsync中保存状态

Azure service fabric 在OnActivateAsync中保存状态,azure-service-fabric,Azure Service Fabric,我的Service Fabric actor可以在其工作期间在内存中创建一些大型数据结构。我不想在每次方法调用结束时更新可靠集合。 我能否仅通过StateManager在OnActivateAsync方法中保存我的参与者状态,并在OnActivateAsync方法中恢复它?在这种情况下,我可以丢失状态吗?如果参与者、其底层服务或节点崩溃,您将丢失数据。如果您可以释放状态,或者可以在Actor ActivateAsync中重建状态,那么您可以将该结构作为类成员保留。(就像在常规poco中) (发布

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

如果参与者、其底层服务或节点崩溃,您将丢失数据。如果您可以释放状态,或者可以在Actor ActivateAsync中重建状态,那么您可以将该结构作为类成员保留。(就像在常规poco中)


(发布为anwser)

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