首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于微服务的体系结构和每个节点的单独缓存

基于微服务的体系结构和每个节点的单独缓存
EN

Stack Overflow用户
提问于 2017-01-26 18:35:23
回答 2查看 3.6K关注 0票数 4

在分布式微服务应用程序中,对每个节点使用分离的本地缓存是否被认为是错误的做法?我听说在单块应用程序中使用本地EHCache作为Hibernate的二级缓存提供者是可以的,但是在分布式环境中使用分布式缓存是常见的做法,例如Memcached、Redis或Hazelcast。对每个节点使用分离的缓存会带来什么后果?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-26 21:06:26

“计算机科学中只有两个难题:缓存失效和命名问题”--菲尔·卡尔顿

应用服务器中本地缓存的主要问题是,它使得缓存失效变得比以前更加困难。

每次资源更改时,它都必须在所有本地缓存上失效(并更新)。这需要一个知道在任何时间点运行的所有缓存服务器的系统。这个系统必须被告知所有的更新,这样它才能协调所有服务器上的数据失效。它还必须处理重试、处理失败的服务器等。

如果您的应用程序服务器有自己的本地缓存,则必须使用单独的系统或在应用程序代码中自己解决这些问题。分布式缓存系统可以为您解决这些问题。您可以进行更新调用,并在成功时保证数据的一致性(或最终的一致性)。

这是关注点的分离。使用单独的缓存集群,缓存逻辑和相关问题将在一个地方处理。对于多个应用程序,可以很容易地重用相同的群集,而不是对开发的每个应用程序重新使用相同的群集。

另一个小缺点是,如果不希望性能下降,则每次生成新服务器时都必须预热缓存。这将导致产生服务器的时间更长。

票数 13
EN

Stack Overflow用户

发布于 2019-02-01 07:58:37

在这里,我们还可以做一件事,就是使用message进行缓存失效。

使用kafka或任何其他队列来捕获数据包并使其失效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41880524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档