我正在寻找一种在不同主机上运行的两个tomcat web应用之间共享缓存的解决方案。缓存用于数据同步,因此必须保证缓存在两个tomcat实例之间始终保持最新。 (对不起,我不是100%确定这个要求的正确术语是“一致性”还是更具体的术语,如具有ACID属性)。另一个要求当然是它应该快速访问缓存,其读写次数与读取次数相同。我确实可以访问共享文件系统,因此这是一个考虑因素。
我看过像ehcache这样的东西,但是为了在webapps之间获得共享缓存,我需要在Terracotta环境之上实现或使用新的ehcache缓存服务器。前者(Terracotta)似乎有点矫枉过正,而缓存网络服务器似乎无法提供我想要的快速性能。
我看到的另一个解决方案是在Redis或memcachedb等快速键值存储上构建简单的东西。 Redis在内存中,但很容易配置为集中式缓存,而memcachedb是一个基于磁盘的持久缓存,可以工作,因为我有一个共享文件系统。
我正在寻找有关如何最好地解决此问题的建议。该解决方案需要是一种相对成熟的技术,因为它将用于生产环境。
提前致谢!
答案 0 :(得分:4)
如果您需要分布式缓存,我非常确定您不需要兵马俑或ehcache服务器。 Ehcache和其中一个four replication mechanisms会这样做。
然而,根据您所写的内容,我猜您正在寻找的不仅仅是缓存。 Memcached / Ehcache是您可以为您的应用程序称为 缓存层 的示例 - 仅此而已。
如果您发现自己使用'保证''最新''ACID'这样的词,最好使用像Oracle Times Ten / MySQL Cluster / Redis这样的内存数据库和基于磁盘的持久存储
答案 1 :(得分:3)
您可以使用memcached(而不是memcachedb)进行快速有效的缓存。除非你想要持久缓存,否则Redis或memcachedb可能是一种矫枉过正。 Memcached可以非常容易地进行集群,您可以使用spymemcached java客户端来访问它。 Memcacached非常成熟,运行数十万甚至数百万的生产服务器。它可以在生产时通过Nagios和Munin系统进行监控。