增量演员状态复制?

Incremental actor state replication?

我想知道 Service Farbic 中的 actor 状态是否使用某种增量 delta/diff 机制进行复制,或者是否为每次更改复制完整状态。

假设我们有一个具有相当大状态负载的 actor,比如 100KB。我们还假设在该状态中嵌入了一个计数器值。计数器以高频变化,而其余状态以非常低的频率变化。

在这种情况下,如果为每个更改复制完整状态将是一种浪费,我们可能应该考虑另一种设计。

但是,如果 Service Farbric 能够进行增量复制,那么这种方法可能会很有吸引力。

有人知道这方面的详情吗?

也许 Service Fabric 在复制期间对序列化状态使用二进制 delta/diff 算法,或者状态更改可能是每个 state name?

这是每个州的名称。如果您查看 IActorStateProvider.SaveStateAsync 方法,您会看到它接受 ActorStateChange 的列表。持久提供程序 (KvsActorStateProvider) 序列化该列表中的每个值(删除的情况除外),并更新存储。