3

在我们的项目中,我们决定在我们的应用程序中使用 Ehcache 作为 Hibernate 和查询缓存的二级缓存。它似乎运作良好。

然后突然我们意识到我们的生产环境是集群的。查看 ehcache 文档,我发现最好的办法是进行分布式缓存,但是这涉及到 Terracotta Server,在这个阶段客户端不会准备支付。

根据文档,对于独立拓扑:

如果在有多个应用程序节点运行同一应用程序的情况下使用独立缓存,则它们之间存在弱一致性。

我的两个问题是:

  1. 在“只读”模式下使用 ehcache 并继续在集群环境中独立使用它,我们会受到什么影响?因为如果只是这样说,对于它会命中其他节点的情况,它会从数据库中获取数据,因为缓存不会在那里复制/配置,我想我们会接受它。唯一的问题是,它不应该导致异常。我想知道在我的场景中使用独立拓扑的后果。

  2. 我们可以将第三种拓扑,即复制缓存作为解决方案吗?

我是 ehcache 的新手,因此有这些基本问题。非常感谢回复!

谢谢!

4

1 回答 1

0

如果您的应用程序是集群的,并且您需要缓存可能更改的数据,您将需要使用支持此功能的缓存解决方案。正如您所说,如果您希望在集群中使用 EhCache,您将需要使用 Terracotta。

Hibernate 文档在此处列出了支持的缓存提供程序。

我已经使用 Infinispan(分布式缓存的开源 JBoss 解决方案)成功实现了这一点。这里有一个综合指南,它将为您提供启动和运行所需的一切。

Infinispan 支持多种操作模式,包括失效、复制和分布式。2LC 的默认设置是同步失效。在这种模式下,当一个实体在集群中的一个节点上更新时,它将使缓存区域无效,并且所有其他节点将被通知并执行相同的操作。

于 2012-09-24T13:24:34.420 回答