我用两台机子(tomcat1和tomcat2)做了负载均衡,用的是ehcache,做了usercache 和resourcecache,问题出现了,在tomcat1上注册的用户无法在tomcat2上登录,后来我修改了acegi的设置,让用户登录时不从usercache读取数据,而是从数据库获取数据,但是随之问题又出现了,在tomcat1上注册的用户,可以在tomcat2上登陆了,但是权限却无法同步了。于是我明白了,一定要用ehcache的分步式缓存,其实ecache自1.2+版本后就支持了分步式缓存,配置也很简单,以下是我的配置例子,希望对你们有用
<defaultCache
maxElementsInMemory="10000"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="0"
timeToLiveSeconds="0"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"/>
<!--<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1,multicastGroupPort=4446, timeToLive=32"/>-->
<!--这是在配置tomcat1服务器,其中192.168.0.2是tomcat1的IP,192.168.0.118是tomcat2的IP,tomcat2的配置就是把这些IP互换就行了-->
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual,rmiUrls=//192.168.0.118:40001/userCache|//192.168.0.118:40001/resourceCache"/>
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" properties="hostName=192.168.0.2,port=40001,socketTimeoutMillis=120000"/>
<!-- acegi cache-->
<cache name="userCache" maxElementsInMemory="10000" eternal="true" overflowToDisk="true">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
</cache>
<!-- acegi cache-->
<cache name="resourceCache" maxElementsInMemory="10000" eternal="true" overflowToDisk="true">
<cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"/>
</cache>
注意:如果你用的是tomcat服务器,请一定要将ehcache的jar包放到tomcat的common/lib下,否则会出现
java.io.EOFException
分享到:
相关推荐
2. 负载均衡:通过缓存,可以将请求分散到各个节点,缓解单个节点的压力。 3. 故障转移:当某个节点发生故障时,其他节点仍能继续提供服务,提高了系统的可用性。 三、EhCache配置文件详解 EhCache的配置主要通过`...
4. **`terracotta-toolkit-cluster-config`**: 在更复杂的配置中,可以使用此元素来定义集群行为。 5. **`<terracotta-concurrency>`**: 配置读写锁的并发级别,影响多线程环境下的性能。 6. **`<cache-extension>...
Ehcache的分布式特性允许在大型系统中进行负载均衡,提高应用性能,同时减少了数据库的压力。 在SpringBoot应用中集成Ehcache,通常需要以下步骤: 1. **环境配置**:首先,你需要在SpringBoot的`pom.xml`文件中...
- **负载均衡**:通过将请求分散到多个节点,降低了单个节点的压力,提升了系统性能。 - **缓存分区**:数据可以根据特定策略自动分布到不同的节点,实现数据的高效管理和检索。 3. **配置集群** 要设置Ehcache...
3. **分布式缓存**:Ehcache支持分布式部署,通过 Terracotta Server 集群,可以在多台服务器间共享和同步缓存,提供高可用性和负载均衡。 4. **缓存策略**:除了LRU和LFU,Ehcache还提供了TTL(Time To Live)和...
Apache和Tomcat的组合经常被用来搭建这样的架构,特别是在实现负载均衡和集群时。在这个场景中,session同步是一个核心问题,因为用户session数据的正确管理和共享是保持应用程序一致性和用户体验的关键。本文将深入...
1. **数据分布**:数据可以在集群中的多个节点上分布,通过一致性哈希算法确定数据存储位置,实现负载均衡。 2. **复制策略**:支持全副本复制或主-从复制,确保数据的高可用性。全副本复制意味着所有节点都持有...
- **分布式缓存**:通过配置,Ehcache可以在多台机器上分布数据,实现高可用性和负载均衡。 - **缓存策略**:包括LRU(最近最少使用)、LFU(最不经常使用)等淘汰策略,确保缓存空间的有效利用。 - **缓存复制**:...
再者,Ehcache支持集群环境,意味着可以在多台服务器之间共享缓存,实现高可用性和负载均衡。通过RMI(远程方法调用)或者Terracotta服务器,Ehcache能够在分布式环境中保持数据的一致性。这对于构建可扩展的Web应用...
这通常在Ehcache配置文件或初始化代码中完成。 5. **处理缓存事件**:当缓存中的数据发生变化时,如添加、删除或更新项,Ehcache会触发相应的事件。在RMI集群中,这些事件会被传播到其他节点,以保持数据的一致性。...
1. **负载均衡**:Ehcache集群可以将数据分布在多个节点上,从而将负载分散到各个服务器,降低单个节点的压力。 2. **高可用性**:如果一个节点失效,其他节点仍然可以提供服务,确保系统连续运行。 3. **数据冗余**...
1. 集群支持:Memcache天生支持分布式,数据存储在多个服务器上,通过一致性哈希算法实现数据的分布和负载均衡。 2. 第三方持久化:尽管Memcache自身不提供持久化机制,但可以通过第三方应用如memcachedb将数据保存...
6. **引入Ehcache**:在项目中添加Ehcache依赖,配置缓存策略,将需要缓存的部分进行注解或配置。 7. **测试**:编写单元测试和集成测试,确保各个模块和接口正常工作。 8. **部署运行**:打包项目,发布到服务器,...
3. ** Terracotta Server Array**:使用Terracotta服务器,可以实现EHcache的集群管理,提供高可用性,故障转移和负载均衡功能。 4. **缓存同步**:通过RMI(Remote Method Invocation)或JGroups协议进行节点间的...
- 分布式缓存:Ehcache支持分布式缓存模式,可以在多台服务器之间共享缓存数据,提供高可用性和负载均衡。 - 内存和磁盘存储:Ehcache将缓存数据存储在内存中以实现快速访问,同时当内存空间不足时,可以将部分...
5. **分布式缓存**:Ehcache支持在多台服务器之间共享缓存,通过RMI(Remote Method Invocation,远程方法调用)或者 Terracotta 平台实现分布式缓存,从而提供高可用性和负载均衡。 6. **缓存加载器(CacheLoader...
4. **分布式缓存**:Ehcache 1.3支持集群环境,可以实现跨节点的数据共享和复制,提高了高可用性和负载均衡。 5. **API与集成**:Ehcache提供简单易用的Java API,方便在各种Java应用中集成。同时,它还支持Spring...
2. **负载均衡**:减轻后端服务器的压力,提高整体系统吞吐量。 3. **响应时间优化**:对于已经缓存的数据,响应时间显著缩短。 **wstest 文件** 在提供的文件列表中,"wstest"可能是示例代码或者测试用例。这个...
2. **分布式缓存**:每个节点都有一份完整的缓存副本,当某个节点请求数据时,会从最近的节点获取,实现负载均衡。 3. **数据一致性**:通过使用强一致性模型,Ehcache确保在集群中所有的更改都是同步的,保证了...