Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Ehcache扩展javaweb应用程序_Java_Tomcat_Caching_Amazon Web Services_Ehcache - Fatal编程技术网

使用Ehcache扩展javaweb应用程序

使用Ehcache扩展javaweb应用程序,java,tomcat,caching,amazon-web-services,ehcache,Java,Tomcat,Caching,Amazon Web Services,Ehcache,我有一个网站托管在AWS上,在一个弹性负载平衡器ELB后面的每个盒子上运行3个tomcat。所有3个框都运行相同的应用程序。它们中的每一个都通过方法上的注释使用Ehcache。例如 @Cacheable(cacheName = PRODUCT_CACHE) public List<Product> getProducts() { } 所以每个盒子都有自己的缓存。这意味着每个盒子上的内存使用量是原来的3倍,除了在任何一个盒子上触发特定事件时必须清除每个盒子上的缓存这一事实之外

我有一个网站托管在AWS上,在一个弹性负载平衡器ELB后面的每个盒子上运行3个tomcat。所有3个框都运行相同的应用程序。它们中的每一个都通过方法上的注释使用Ehcache。例如

 @Cacheable(cacheName = PRODUCT_CACHE)
 public List<Product> getProducts() {
 }
所以每个盒子都有自己的缓存。这意味着每个盒子上的内存使用量是原来的3倍,除了在任何一个盒子上触发特定事件时必须清除每个盒子上的缓存这一事实之外


对于此用例,使用Ehcache或任何其他缓存库的更好方法是什么,以减少内存消耗并更易于管理缓存破坏?

有几种方法可以在集群中复制Ehcache,请参阅

当您在浪费内存时,此设置对故障更具弹性—如果节点发生故障,则不会丢失缓存,并且网络开销更小,因为所有缓存命中都是本地的,往返在AWS上可能会有一些差异

我们换成了Hazelcast,对此非常满意。这是一个集群设计,在那里你可以很容易地调整你想要保留的拷贝数。它还支持Spring的@Cacheable:

试试看,它是一个混合缓存库,使用EhCache和AWS Elasticache Redis在集群中进行快速缓存