我的系统使用一堆微服务来处理项目,我计划创建一个Stateful MicroService来保存项目的最新状态.在该服务中,我计划将所有项状态存储在可靠的字典中,并且每当访问项时,更新项的上次访问字段.
我的要求是,我只想将最近使用的项目存储在可靠的集合中,并且需要将长时间未访问的项目移动到外部存储器,如azure表存储,
外部存储和可靠集合需要同步.
意思是所有项目都应该在外部存储中,并且最近使用的项目应该是可靠的集合.
这是为了减少可靠收集的开销.
像可靠的集合充当缓存.
如上所述,实施我的解决方案是最佳做法吗?
枚举ReliableCollection是一种好习惯吗?
解决方法
如果Reliable Dictionary意味着充当缓存,那么我真的没有看到将未使用的项目卸载到Azure存储的重点.如果它是一个缓存,我希望清除未使用的项目,并且调用者需要返回到缓存中已过期的任何事物的真实来源.但听起来你希望Reliable Dictionary成为最新的真相来源.因此,我认为您必须首先确定您是否实际构建了一个缓存,或者是一个可以将数据从内存中分页的真值数据存储源.听起来更像是后者.
在任何一种情况下,它都可以按照您的描述完成,但保持它们一致同步并不容易,因为您没有可靠字典和外部存储中的事务.
枚举集合很好,但这是一项昂贵的操作,因此我不建议在热路径(例如用户请求路径)中对大量数据执行此操作.可以按计划的方式定期进行.
您需要将数据卸载到外部存储吗?你可以卸载到本地磁盘吗? Reliable Collections很快就会自动将状态卸载到磁盘.