我最近遇到了与多层体系结构相关的“多层缓存”一词,但没有对这样的缓存将是什么(或如何使用)进行有意义的解释。
对这个短语的相关在线搜索也不会出现任何问题。我的解释是为n层web应用程序的所有层提供缓存。可能是一个分布式缓存,每个层上都有一个缓存节点。
这个词以前见过吗?我说的对吗?太离谱了?
发布于 2012-01-11 14:13:40
在玩了几个星期的EhCache之后,仍然不太清楚“多层”缓存是什么意思。我将跟进我解释为隐含意义的内容;如果在路上的任何时候有人出现并知道其他情况,请随时回答,我将删除这一条。
多层缓存似乎是位于n层体系结构中的1+层上的复制和/或分布式缓存。它允许多个层上的组件访问同一个缓存。在EhCache中,使用复制或分布式缓存体系结构和简单地引用来自多个层的相同缓存服务器就可以实现这一点。
发布于 2015-10-15 17:20:19
我知道这是很古老的,但我认为我应该在这里投出我的两分钱,因为我已经写了几个多层缓存,或者至少写了几个迭代。
请考虑这一点:每个应用程序都有不同的层,并且在每一层都可以缓存不同形式的信息。每个缓存项的过期通常有两个原因之一,要么是一段时间已经过期,要么是依赖项已被更新。
对于这个解释,让我们想象一下我们有三个层:
每个层都依赖于它的父层,我们将使用某种形式的依赖分配来定义那些层。因此,块依赖于依赖于模板的对象。如果对象被更改,块中的任何依赖项都将被删除和刷新;如果模板被更改,任何对象依赖项都将被删除,进而删除任何块,而所有依赖项都将被刷新。
有几个好处,很长的过期时间是一个很大的好处,因为依赖关系将确保无论何时更新父母,下游资源都会被更新,这样就不会得到陈旧的缓存资源。块缓存本身是一个很大的帮助,因为缺少整个页面缓存(需要AJAX或边缘端包含以避免缓存动态内容),块将是与最终用户浏览器/界面最接近的元素,并且可以节省大量预处理周期。
然而,像这样的多层缓存的复杂之处在于,它通常不能依赖纯粹基于DB的外键删除,也就是说,除非每一层相对于其父层(即: 1:1 )。块将只依赖于单个对象,而该对象依赖于单个模板)。您必须以编程方式解决相关资源的删除问题。如果您想动态地使用删除规则,可以通过DB中的存储过程,或者在应用程序层中这样做。
希望对某人有帮助:)
编辑:我应该添加一个,这些层中的任何一个都可以在缩放的环境中进行集群、分片或其他操作,所以这个模型可以在小环境和大环境中工作。
https://stackoverflow.com/questions/8606571
复制相似问题