Hibernate / ehCache部署在多个非群集服务器上

时间:2014-10-23 18:23:34

标签: java hibernate amazon-web-services ehcache

我有一个我需要解决的架构问题。我有一个使用Hibernate和二级ehCache的应用程序,它可以访问单个数据库。此应用程序跨AWS中的多个服务器部署在AWS中的多个区域(一些在美国,一些在欧盟等)。该应用程序目前只读,但我们需要添加写入功能。问题在于如何使服务器及其本地二级缓存保持同步?

  • Hibernate是否能够判断数据库中的对象是否已更改且缓存副本是否已过时?
  • 我们需要设置ehCache复制吗?
  • 我们是否应该将ehCache替换为分布式二级缓存(因为它不是服务器本地的,这似乎打败了它的目的)。
  • 或者完全删除缓存,然后直接将数据库转到K.I.S.S?

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,目前实施的解决方案是使用JMS消息传递。每当更新缓存时,它都会在所有主机正在监听的主题上发送消息。一旦收到消息,他们就会更新缓存中的相关条目。

所以保持同步。

Hibernate无法发现数据库中的数据发生了变化。因此,您有责任通过轮询DB或使用上面建议的消息来管理它。

我还建议评估Ehcache 2.0之后提供的分布式EHcache [不确定版本]