可靠的集合缓存作为Service Fabric中的缓存

Bin*_*yan 8 c# architecture caching azure azure-service-fabric

我的系统使用一堆微服务来处理项目,我计划创建一个Stateful MicroService来保存项目的最新状态.在该服务中,我计划将所有项状态存储在可靠的字典中,并且每当访问项时,更新项的上次访问字段.

我的要求是,我只想将最近使用的项目存储在可靠的集合中,并且需要将长时间未访问的项目移动到外部存储,如azure表存储,并且外部存储和可靠集合需要是同步中.

意味着所有项目应该在外部存储和最近使用的项目中可靠收集.

这是为了减少可靠收集的开销.

像可靠的集合充当缓存.

如上所述,实施我的解决方案是最佳做法吗?枚举ReliableCollection是一种好习惯吗?

Vac*_*cek 5

如果 Reliable Dictionary 旨在充当缓存,那么我真的不认为将未使用的项目卸载到 Azure 存储有什么意义。如果它是一个缓存,我希望未使用的项目会被清除,并且调用者需要回到缓存中过期的任何内容的真实来源。但听起来您希望 Reliable Dictionary 成为最新的事实来源。所以我认为你必须首先决定你是否真的在构建一个缓存,或者一个可以从内存中分页数据的真实数据存储源。听起来更像是后者。

在任何一种情况下,都可以按照您的描述完成,但保持它们始终同步并不容易,因为您没有跨 Reliable Dictionary 和外部存储的事务。

枚举集合很好,但它是一项昂贵的操作,因此我不建议在热路径(例如用户请求路径)中对大量数据执行此操作。可以按计划的方式定期执行此操作。

您是否需要将数据卸载到外部存储?你可以卸载到本地磁盘吗?Reliable Collections 很快就会自动将状态卸载到磁盘。

  • 正在进行中。在最新版本 (5.1) 中,数据始终位于内存和磁盘中。在未来的版本中,只有热数据会在内存中,所有数据仍会在磁盘上。 (2认同)