我们在两个节点上有Spring启动应用程序。现在我们想要每隔5秒在缓存中保留一些数据而不是呼叫外部服务。问题是如何在两个节点之间共享缓存?可能吗 ?或者也许每个节点创建两个单独的缓存?哪种方法更好?我认为维护共享缓存非常困难。感谢您的任何提示
答案 0 :(得分:7)
我会选择你的术语“共享缓存”,它代表集群或分布式缓存产品,例如Infinispan,hazelcast或Apache Ignite。
您可能需要共享缓存,原因如下:
一致性:如果您的应用程序在一个节点中更新缓存,则共享缓存会关注更新的传播,并确保每个节点在更新完成后都会看到新值。这是共享缓存可以提供给您的东西,但不一定是任何“共享缓存”产品。
时间10问题:当您添加更多节点时,共享缓存将限制对外部服务的请求,否则,每个节点可能会请求相同的值。
大数据:这适用于分布式缓存:您可以缓存更多数据,然后在一个系统中有空间。
但是,您会以额外的配置和部署复杂性为代价获得此优势。此外,共享缓存的访问延迟通常远高于本地缓存。要进行比较,请查看这些benchmarks。
总结:你现在有两个节点。如果您没有协调更新或失效的问题,请使用简单的本地缓存。如果你想成为未来的证据,并有空闲时间修改共享缓存,那就去吧:)。
答案 1 :(得分:1)
由于您已经在使用spring boot,因此我在后台使用Redis来构建Cache抽象(注释)。 Redis可以轻松共享和集群,并且性能足够高。见official documentation