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 服务实例回收未使用的内存