Service Fabric Actor State:在持久模式下从哪里读取状态?

Posted

技术标签:

【中文标题】Service Fabric Actor State:在持久模式下从哪里读取状态?【英文标题】:Service Fabric Actor State : where is the state read from in Persistent mode? 【发布时间】:2020-07-17 16:13:45 【问题描述】:

在 Persistent 模式下,Service Fabric Actor 状态会持久保存在磁盘上并复制到其他节点,这在文档中很清楚。我的问题是关于演员状态的连续查询,在演员的整个生命周期中,每次调用是从磁盘读取还是在第一次调用磁盘后从内存中提取?

【问题讨论】:

【参考方案1】:

SF 团队的 Vaclav 提供了答案here。

在服务中存储数据的组件称为状态 提供者。状态提供程序可以仅在内存中,也可以在内存中 + 本地 磁盘。您使用参与者服务获得的默认状态提供程序是 内存+本地磁盘,但它只将热数据保存在内存中,因此您的 存储要求不受内存限制。与可靠的对比 当前存储所有数据的集合状态提供程序 在内存中和本地磁盘上,尽管在未来的版本中它也会 可以选择仅将热数据保留在内存中,并将其余数据卸载到 本地磁盘。

因此,活动 Actor 的数据在内存中,而非活动 Actor 的状态在磁盘上。因此,根据通话之间的时间,它可能是两者之一。 (因为 Actor 的生命周期由 SF 为您管理。)两个直接相互调用的调用将从内存中获取数据。

【讨论】:

以上是关于Service Fabric Actor State:在持久模式下从哪里读取状态?的主要内容,如果未能解决你的问题,请参考以下文章

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

Service Fabric Actor State:在持久模式下从哪里读取状态?