在 Persistent 模式下,Service Fabric Actor 状态持久保存在磁盘上并复制到其他节点,这在文档中很清楚。我的问题是关于演员状态的连续查询,在演员的整个生命周期中,每次调用是从磁盘读取还是在第一次调用磁盘后从内存中提取?
问问题
77 次
1 回答
1
SF 团队的 Vaclav 在这里提供了答案。
将数据存储在服务中的组件称为状态提供程序。状态提供者可以仅在内存中,也可以在内存+本地磁盘中。您使用 Actor 服务获得的默认状态提供程序是内存中 + 本地磁盘,但它仅将热数据保存在内存中,因此您的存储需求不受内存限制。与 Reliable Collections 状态提供程序相反,后者当前将所有数据都存储在内存中和本地磁盘上,尽管在未来的版本中,它也可以选择仅将热数据保留在内存中并将其余数据卸载到本地磁盘。
所以活动 Actor 的数据在内存中,非活动 Actor 的状态在磁盘上。因此,根据通话之间的时间,它可能是两者之一。(因为 SF 为您管理 Actor 的生命周期。)两个直接相互调用的调用将从内存中获取数据。
于 2020-04-10T07:23:54.140 回答