ehcache 缓存丢失_分布式EHCACHE系统在缓存同步上存在着不小的缺陷

本文探讨了EHCACHE在分布式环境下的缓存数据同步问题,主要介绍了两种方式:RMI组播和P2P方式。RMI组播方式在复杂网络环境中存在缺陷,而P2P方式在自动部署时配置难度大。对于大规模分布式部署,建议使用如MEMCACHED等集中式缓存解决方案。
摘要由CSDN通过智能技术生成

分布式EHCACHE系统,如何实现缓存数据同步?

方式1: RMI组播方式

这也是最常用的方式,配置简单,关键一点,各EHCACHE的节点配置都是一样的

例子:

spring 配置中调用的ehcache文件

id="cacheManager"

class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">

name="configLocation">

classpath:ehcache_mc.xml

class="org.springframework.cache.ehcache.EhCacheFactoryBean">

name="cacheManager">

name="cacheName">

userCache

ehcache_mc.xml:

maxElementsInMemory="10000"

maxElementsOnDisk="0"

eternal="true"

overflowToDisk="true"

diskSpoolBufferSizeMB="20"

memoryStoreEvictionPolicy="LFU"

transactionalMode="off">

class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" properties="replicateAsynchronously=true, replicatePuts=true,

replicateUpdates=true,replicateUpdatesViaCopy= true,

replicateRemovals= true "

/> 

class="cn.com.gary.test.ehcache.EventFactory" />

class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"

properties="peerDiscovery=automatic,

multicastGroupAddress=230.0.0.1,

multicastGroupPort=4446,timeToLive=255"/>

class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"/>

原理:

这样当缓存改变时,ehcache会向230.0.0.1端口4446发RMI UDP组播包

这种组播方式的缺陷:

EHCACHE的组播做得比较初级,功能只是基本实现(比如简单的一个HUB,接两台单网卡的服务器,互相之间组播同步就没问题),对一些复杂的环境(比如多台服务器,每台服务器上多地址,尤其是集群,存在一个集群地址带多个物理机,每台物理机又带多个虚拟站的子地址),就容易出现问题.

究其原因, 组播/广播转发是一个很复杂的过程. 简单的说,

一个组播缺省只能在一个网段内传输,不能跨网段.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值