我想知道Service Farbic中的actor状态是否使用某种增量delta / diff机制进行复制,或者是否为每次更改复制了完整状态。
假设我们有一个具有相当大的状态有效负载的actor,比如100KB。我们还要说一个计数器值嵌入在该状态中。计数器以高频率改变,而其余状态以非常低的频率改变。
在这种情况下,如果为每次更改复制完整状态将是浪费,我们应该考虑另一种设计。
但是,如果Service Farbric能够进行增量复制,那么这种方法可能很有吸引力。
有人知道这方面的细节吗?
也许Service Fabric在复制期间对序列化状态使用二进制delta / diff算法,或者状态更改可能是每个州名称增量?
答案 0 :(得分:2)
这是州名。如果您查看方法IActorStateProvider.SaveStateAsync
方法,您会看到它接受ActorStateChange
列表。持久化提供程序(KvsActorStateProvider
)序列化该列表中的每个值(删除除外),并更新存储。