春季4,共享缓存beetwen节点

问题描述:

我们在两个节点上有Spring引导应用程序。现在我们希望保留一些数据到缓存中,而不是每5秒调用一次外部服务。问题是如何在两个节点之间共享缓存?可能吗 ?或者也许为每个节点创建两个独立的缓存?哪种方法更好?我认为维护共享缓存非常困难。感谢您提供任何提示春季4,共享缓存beetwen节点

+0

您可以使用配置的Ehcache进行群集。 –

+0

我需要另一台ehcache服务器吗? – user3528733

+0

不,它只是一个可以嵌入到应用程序中的库。甚至没有一个单独的过程。 –

我将选择您的术语“共享缓存”,它表示集群或分布式缓存产品,例如Infinispan,hazelcast或Apache Ignite。

您可能希望由于以下原因共享缓存:

一致性:如果您的应用程序更新缓存中的一个节点,一个共享的缓存会在意更新的传播,并确保每一个节点发现更新完成后的新值。这是共享缓存可以给你的东西,但不一定是任何“共享缓存”产品。

次10​​问题:当您添加更多节点时,共享缓存将限制对外部服务的请求,否则每个节点可能会请求相同的值。

大数据:这适用于分布式缓存:您可以缓存更多数据,然后在一个系统中存在空间。

但是,您以更多的配置和部署复杂性为代价获得了这些好处。此外,共享缓存的访问延迟通常远高于本地缓存。为了进行比较,请看这些benchmarks

总结:现在有两个节点。如果您没有协调更新或失效的问题,请保留简单的本地缓存。如果你想成为未来的证明,并有空闲时间来修补共享缓存,去吧:)

由于你已经使用春季启动,我会使用缓存抽象(注释)在后台使用Redis的背景。 Redis可以很容易地共享和集群,并且性能足够好。请参阅official documentation

+0

好吧,但是我需要另一台机器来安装redis吗? – user3528733

+0

那么如果您想要容错,则需要在多台机器上安装Redis并设置HA群集(http://redis.io/topics/cluster-tutorial)。如果您可以在运行应用程序的同一台计算机上执行此操作,则取决于安全性要求以及是否有足够的容量。 –