Keywords:Ehcache, RMI Replicated Caching, 集群
Ehcache用户手册
Ehcache支持RMI、JMS、JGroups等多种集群环境下的缓存复制策略,具体可以参考Ehcache官方的用户手册:http://ehcache.org/documentation/index.html
选型:RMI Replicated Caching
查了很多资料,最终选择了RMI的缓存复制策略,主要是由于它配置起来比较简单,并且不依赖于第三方的jar包,目前也仅仅是在实验阶段,为了快速搭建原型环境。
因归正传
关于在集群环境下配置Ehcache的RMI复制策略,网上有很多现成的资料,官方网站的RMI Replicated Caching也有非常详细的讲解。但网上的大部分资料都是通过修改Ehcache.xml配置文件,增加cacheManagerPeerProviderFactory、cacheManagerPeerListenerFactory,并为cache配置cacheEventListenerFactory来实现cache的复制策略。
这样就存在一个问题,只有在Ehcache.xml中配置的cache才可以实现集群环境下的复制,如果我们有很多cache需要在集群环境下实现复制,把他们全部加到Ehcache中工作量会很大,并且容易出错,以后的扩展性也不够好。
通过查找官方资料,发现Ehcache有很多API,完全可以程序动态创建可以进行RMI复制的cache,这样就可以很方便的创建很多支持集群环境的cache,而不用都配置到配置文件中。
直接上代码:
1、首先要对Ehcache.xml进行通用性配置,在ehcache节点下增加cacheManagerPeerProviderFactory、cacheManagerPeerListenerFactory配置,这里使用的是组播方式。
<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1, multicastGroupPort=4446, timeToLive=32"/>
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"/>
2、在程序中动态创建支持RMI复制的cache:
private static final CacheManager singletonManager = CacheManager.getInstance();
CacheEventListenerFactoryConfiguration config = new CacheEventListenerFactoryConfiguration();
config.setClass("net.sf.ehcache.distribution.RMICacheReplicatorFactory");
//config.setProperties("replicateAsynchronously=true," +
// "replicatePuts=true," +
// "replicateUpdates=true," +
// "replicateUpdatesViaCopy=true," +
// "replicateRemovals=true");
CacheConfiguration cacheConf = new CacheConfiguration("myCacheName", maxSize);
cacheConf.addCacheEventListenerFactory(config);
Cache cache = new Cache(cacheConf);//创建支持RMI复制的cache
singletonManager.addCache(cache);//将此cache纳入manager管理
集群中的多个服务器,都用相同的代码获取此cache,只要保证cache的名字相同即可。
通过如上配置,"myCacheName” cache已经支持集群环境下的RMI复制,在集群中的每个server上通过singletonManager.getCache("myCacheName")即可获取此cache进行CURD操作。
看看效果吧,集群中的多个服务器同时执行对此cache的插入操作,其他服务器上都会得到相同的复制。
分享到:
相关推荐
在IT行业中,分布式缓存是一种优化高并发场景下数据访问性能的重要技术,它通过在网络中的多台服务器上分发数据来提高系统的响应速度和可扩展性。本文将深入探讨基于JGROUPS的Ehcache实现的分布式缓存复制,这是一种...
在分布式环境中,Ehcache通过使用JGROUP来实现分布式缓存。JGROUP是一个用于构建可靠集群通信的库,可以提供组成员资格、故障检测、传输协议等多种功能,使得Ehcache能够在多个节点之间共享和同步缓存数据。Ehcache...
这个“ehcache rmi集群demo”提供了一个实践平台,帮助开发者理解Ehcache在分布式环境下的工作原理和RMI通信机制。通过这个示例,我们可以深入学习如何在Java应用中部署和管理一个高性能、可扩展的缓存集群,这对于...
Ehcache RMI Replicated Cluster 是一种分布式缓存解决方案,它使用远程方法调用(RMI)技术在多个节点之间复制数据,以实现高可用性和负载均衡。在大型分布式系统中,缓存是提高应用程序性能的关键组件,因为它可以...
通过RMI实现的Ehcache分布式缓存,可以有效地提高多节点环境下的数据处理速度,同时降低数据库的压力。然而,RMI也有其局限性,如性能瓶颈、网络延迟等问题。在大型分布式系统中,可能会选择更先进的通信协议,如...
总结来说,Ehcache是一款功能强大且易于使用的缓存解决方案,它不仅能够有效地提升单机应用的性能,还能够在分布式环境下通过灵活的配置实现数据的一致性。在实际应用中,结合Spring框架,可以极大地简化缓存管理的...
Ehcache是一个高性能、轻量级的Java分布式缓存库,它被广泛应用于提升应用程序的性能,通过存储经常访问的数据来减少对数据库的依赖,从而加快系统的响应速度。本入门案例将带你了解如何使用Ehcache实现分布式缓存,...
分布式缓存通过插件机制实现,EhCache自带了一些默认的插件,如RMICacheManagerPeerProviderFactory,能够满足大多数应用程序的需求。如果默认插件无法满足特定需求,开发者可以通过查看distribution包的源代码和...
Ehcache还允许通过RMI进行分布式缓存,虽然使用较少,但在特定场景下仍有一定的价值。Ehcache的主要特性包括快速响应、简单的API、丰富的缓存策略、自动持久化等。在Hibernate和Spring等框架中,Ehcache常作为默认的...
在集群环境中,EhCache通过RMI(远程方法调用)或JGroups协议实现节点间的通信,保证了缓存数据的一致性。 二、EhCache在集群环境中的应用 1. 数据共享:在集群环境中,多个服务器节点可以共享同一份缓存数据,减少...
超好的东西,分布式缓存所需配置都在里面,感谢为我们翻译的大牛~~
这个Demo将展示如何利用RMI来创建分布式系统,并利用Ehcache进行高效的数据缓存,以提高系统的性能和响应速度。 首先,我们来深入理解RMI。RMI是Java平台上的一个关键特性,它允许在不同的Java虚拟机(JVM)之间...
它提供本地内存缓存,并且可以通过集群配置实现分布式缓存,使得多个节点间可以共享数据。集群方案在高并发、大数据量场景下尤其重要,因为它能提供更高的可用性和可扩展性。 在Ehcache集群方案中,一个关键组件是...
这通过分布式缓存实现,其中的缓存项可以在集群中的任何节点上创建和查找。当一个节点更新缓存时,其他节点会自动同步,确保一致性。Ehcache使用 Terracotta 的分布式缓存技术来实现这一点。 2. **JGroups**:...
分布式缓存是一种将数据存储在分布式环境中的高速缓存技术,通常用于减轻数据库的负载,提高数据读取速度。常见的分布式缓存系统有Redis、Memcached、Hazelcast等。 2. **为什么要使用分布式缓存?** 主要原因...
**Ehcache 使用详解与集群配置** ...总结,Ehcache是Java开发中常用的缓存解决方案,其强大的集群功能使得在分布式环境下的数据一致性得以保障。通过正确配置和使用,可以极大地提升系统的性能和可靠性。
### 分布式缓存架构与Ehcache集群详解 #### 一、为什么使用缓存? 在现代互联网系统中,为了提高系统的响应速度和降低数据库的压力,缓存技术被广泛应用。缓存通过暂时存储数据副本的方式来加快数据访问的速度,...
通过学习“深入分布式缓存:从原理到实践”,读者可以深入了解分布式缓存的全貌,理解其背后的理论基础,掌握在实际开发中选择和使用分布式缓存的技巧,为构建高效、稳定的应用系统打下坚实基础。
在分布式环境中,为了实现数据共享和高可用性,Ehcache提供了集群功能。而Jgroups则是Java中一个强大的集群通信框架,用于创建容错的集群系统。在Ehcache中,Jgroups被用来实现节点间的通信和同步,确保在集群中的多...
分布式缓存测试框架RadarGun是一个专...对于复杂的分布式缓存系统,通过RadarGun进行基准测试是确保系统在高并发、大数据量下稳定运行的关键步骤。因此,熟悉和掌握RadarGun的使用对于提升Java应用的性能优化至关重要。