关于Ehcahce缓存技术在集群环境宕机失效问题

来源:互联网 发布:淘宝网如何做推广 编辑:程序博客网 时间:2024/06/03 21:36

系统开发较早,使用的是当时较为流行的Ehcache缓存结合Hibernate进行二级缓存的处理,为应用性能的提高做了较大的贡献,之前也在对这种类型的缓存做集群处理,由于版本较低,使用的是ehcahce1.3的处理,集群使用了RMI方式搭建,进行同步,相关简单配置如下:


集群时,一般是使用相同的war包部署,而不会单独更改配置部署。所以在上面的配置中做了手脚,加入了本地的4000端口在远程同步中。实际部署中发现,当一个节点失败后,简单的宕机,集群锁表现的高可用性将失败,这导致所有缓存不能同步了。最后查看源码和跟踪发现,当前系统使用的ehcache1.3的jar包处理,其中RMI方式同步存在一个BUG,就是在同步时前会尝试连接各个端口,循环中处理不好,整体异常抛出,导致全部send同步失败。

查看这个异常信息的源码如下:



查看ehcahce1.3以后版本的源码,已经很好地处理了这一问题,如下是更改后的结果:


有时更新1.3以后jar包不一定适用应用配置,直接更改jar包吧。




0 0