`
ligf06
  • 浏览: 103087 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Ehcache学习(4)

 
阅读更多

6.    分布式缓存集群环境配置

6.1.   集群配置方式

ehcache 提供三种网络连接策略来实现集群, rmi jgroup 还有 jms 。这里只说 rmi 方式。同时 ehcache 可以实现多播的方式实现集群。也可以手动指定集群主机序列实现集群,本例应用手动指定。这里说点题外话,本来看着分发包中的原来的例子配置是一件不怎么难的事情,应该很容易就能实现。但是一开始,我是在我的 linux 主机上和我的主操作系统 windows 上实现集群配置。结果反过来弄过去,都没有成功。然后在网上找一些别人的配置经验,竟然都是配置片段,没有完整的实例文件。结果配置半天没成功。但我怀疑是我的 linux 系统有些地方可能没有配置好,于是先不管他。又开启了我的另一个 windows 主机。然后把程序部署上去,竟然一次试验成功。高兴的同时,我得发句话 不要把代码片段称作实例,这很不负责任 。同时还存在一个问题,在 linux 下没有部署成功的原因有待查明。具体说明:配置 cacheManagerPeerListenerFactory 是配宿主主机配置监听程序,来发现其他主机发来的同步请求配置 cacheManagerPeerProviderFactory 是指定除自身之外的网络群体中其他提供同步的主机列表,用 “|” 分开不同的主机。

下面的例子的测试过程是:主机 B 缓存开启,并从名为 UserCache 的缓存中循环抓取键值为 “key1” 的元素,直到取到,才退出循环。主机 A 缓存启动,并在名为 UserCache 的缓存中放入键值为 “key1” 的元素。显然,如果主机 B 取到的元素,那么就证明同步成功,也就是集群成功。所以在测试过程中先启动主机 B 的测试程序,在启动主机 A 的测试程序。

下面具体说配置文件以及测试程序:

1. 主机 A 的配置文件以及测试源代码

config/ehcache_cluster.xml

Xml 代码

  <ehcache xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance

xsi:noNamespaceSchemaLocation = "ehcache.xsd" >

<cacheManagerPeerProviderFactory

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

properties =" peerDiscovery = manual ,

rmiUrls =// 192.168.1.254:40000/UserCache " />

<cacheManagerPeerListenerFactory

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

properties = "hostName=192.168.1.126,port=40000,socketTimeoutMillis=120000" />

<defaultCache maxElementsInMemory = "10000" eternal = "false"

timeToIdleSeconds = "120" timeToLiveSeconds = "120" over flowToDisk= "true"

diskSpoolBufferSizeMB = "30" maxElementsOnDisk = "10000000"

diskPersistent = "false" diskExpiryThreadIntervalSecon ds= "120"

memoryStoreEvictionPolicy = "LRU" >

<cacheEventListenerFactory

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

</defaultCache>

<cache name = "UserCache" maxElementsInMemory = "1000" eternal = "false"

timeToIdleSeconds = "100000" timeToLiveSeconds = "100000"

overflowToDisk = "false" >

<cacheEventListenerFactory

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

</cache>

</ehcache>

tutorial/UsingCacheCluster

Java 代码

  package tutorial;

import java.net.URL;

import net.sf.ehcache.Cache;

import net.sf.ehcache.CacheManager;

import net.sf.ehcache.Element;

public class UsingCacheCluster {

public static void main(String[] args) throws Exception

{

URL url = UsingCacheCluster.class.getClassLoader().getResource(

"config/ehcache_cluster.xml");

CacheManager manager = new CacheManager(url);

// 取得 Cache

Cache cache = manager.getCache("UserCache");

Element element = new Element("key1", "value1");

cache.put(element);

Element element1 = cache.get("key1");

System.out.println(element1.getValue());

}

}

2. 主机 B 上的配置文件以及测试代码

config/ehcache_cluster.xml

Xml 代码

<ehcache xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance "

xsi:noNamespaceSchemaLocation = "ehcache.xsd" >

<cacheManagerPeerProviderFactory

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

properties =" peerDiscovery = manual , rmiUrls =// 192.168.1.126:40000/UserCache " />

<cacheManagerPeerListenerFactory

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

properties = "hostName=192.168.1.254,port=40000, socketTimeoutMillis=120000" />

<defaultCache maxElementsInMemory = "10000" eternal = "false"

timeToIdleSeconds = "120" timeToLiveSeconds = "120" overflowToDisk = "true"

diskSpoolBufferSizeMB = "30" maxElementsOnDisk = "10000000"

diskPersistent = "false" diskExpiryThreadIntervalSeconds = "120"

memoryStoreEvictionPolicy = "LRU" >

<cacheEventListenerFactory

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

</defaultCache>

<cache name = "UserCache" maxElementsInMemory = "1000" eternal = "false"

timeToIdleSeconds = "100000" timeToLiveSeconds = "100000"

overflowToDisk = "false" >

<cacheEventListenerFactory

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

</cache>

</ehcache>

tutorial/UsingCacheCluster

Java 代码

package tutorial;

import java.net.URL;

import net.sf.ehcache.Cache;

import net.sf.ehcache.CacheManager;

import net.sf.ehcache.Element;

public class UsingCacheCluster {

public static void main(String[] args) throws Exception

{

URL url = UsingCacheCluster.class.getClassLoader().getResource("config/ehcache_cluster.xml");

CacheManager manager = new CacheManager(url);

// 取得 Cache

Cache cache = manager.getCache("UserCache");

while(true) {

Element e = cache.get("key1");

if(e != null) {

System.out.println(e.getValue());

break;

}

Thread.sleep(1000 );

}

}

}

分享到:
评论

相关推荐

    缓存框架-Ehcache学习笔记

    **缓存框架 Ehcache 学习笔记** Ehcache 是一个广泛使用的开源 Java 缓存框架,它在处理大量数据的高性能应用中扮演着重要角色。Ehcache 提供了本地内存缓存、磁盘存储以及分布式缓存的能力,使得应用程序能够快速...

    ehcache学习文档

    ### Ehcache学习文档知识点梳理 #### 一、文档概述与目的 - **文档目的**:旨在帮助读者深入了解和掌握Ehcache缓存技术,适用于所有对缓存技术感兴趣的技术人员。 - **文档范围**:覆盖了Ehcache的基础概念、配置...

    Hibernate4 + Ehcache 例子

    标题 "Hibernate4 + Ehcache 例子" 暗示了我们将探讨如何在Java应用程序中集成Hibernate4 ORM框架和Ehcache缓存系统。这个例子可能是关于如何提高数据访问性能,通过缓存策略来减少数据库查询的次数。 描述中的链接...

    Ehcache 简单的监控

    通过这些示例,我们可以学习如何设置Ehcache的分布式特性,例如使用Terracotta服务器进行集群缓存,以及如何处理分布式环境下的缓存一致性问题。 总结来说,Ehcache的监控涉及了多个方面,包括但不限于使用JMX、Web...

    ehcache.jar及源码

    学习Ehcache时,开发者需要理解其配置文件(通常为`ehcache.xml`),其中包含了缓存管理器的配置、缓存的设置等信息。此外,Ehcache与Spring框架的集成也是常见的应用场景,通过Spring的缓存抽象,可以方便地将...

    Hibernate4二级缓存Ehcache案例

    在“Hibernate4二级缓存Ehcache案例”中,我们可以学习到如何将Ehcache与Hibernate4结合,实现高效的二级缓存。这不仅可以提高数据读取速度,减少数据库压力,还能优化整体应用性能。通过实践这个案例,开发者可以...

    ehcache-2.10.6.jar

    ehcache-2.10.6.jar ehcache jar包供各位开发人员 学习、交流,切勿用于商业用途。

    Ehcache_Hello

    **Ehcache简介** Ehcache是一款开源的Java缓存框架,它被广泛应用于提高应用程序性能,通过存储数据副本以减少对数据库的...通过`Ehcache_Hello`案例,开发者可以逐步学习和实践,从而熟练运用Ehcache进行缓存管理。

    spring3 hibernate4 ehcache实例

    【Spring3 Hibernate4 Ehcache整合实例详解】 在Java企业级应用开发中,Spring、Hibernate和Ehcache是三个非常重要的框架和技术。Spring作为轻量级的IoC(Inversion of Control)和AOP(Aspect Oriented ...

    ehcache 测试 反射类 例子

    通过分析这些源代码,你可以学习如何集成Ehcache到你的应用程序中,以及如何使用反射进行测试和调试。 总结起来,这个例子展示了如何将Ehcache的强大缓存能力与Java反射机制相结合,以提高测试的灵活性和覆盖率。...

    EHCache.jar和文档

    EHCache 是一个开源的、高性能的缓存解决方案,广泛应用于Java应用程序中,以提高数据访问的速度和...通过学习这份技术文档和实际操作,开发者可以深入了解EHCache的工作原理,并有效地利用它来优化应用程序的性能。

    Maven项目Spring4+Hibernate4+shiro+Ehcache项目集成

    在本项目中,我们主要探讨的是一个基于Maven构建的Java Web应用,它整合了Spring 4、Hibernate 4、Apache Shiro以及Ehcache等多个关键框架,旨在实现用户角色菜单管理的功能。以下是对这些技术及其集成应用的详细...

    Mybatis-ehcache 1.2.1源码(ehcache-cache-mybatis-ehcache-1.2.1.tar

    通过对 Mybatis-ehcache 1.2.1 的源码学习,开发者可以更好地理解缓存如何与 ORM 框架协同工作,优化数据库交互,同时也能为自定义缓存解决方案提供参考。在实际开发中,结合缓存策略和监控,可以进一步提升系统的...

    ehcache学习笔记

    ** Ehcache 学习笔记** Ehcache 是一个开源的 Java 缓存系统,它提供了在应用程序中存储和检索数据的高效方式,特别是在高并发环境下。这个笔记将深入探讨 Ehcache 的核心概念、配置和使用场景,以及如何通过源码...

    ehcache学习源码

    通过深入学习Ehcache的源码,我们可以理解其内部的工作机制,包括缓存的创建、存储、检索、更新和清除过程,以及如何优化和调整缓存配置以适应不同应用场景。这有助于我们更好地利用Ehcache提升应用程序的性能,并...

    ehcache-1.2.3.jar 下载

    Ehcache是一个开源的Java缓存库,广泛用于提高应用程序性能,通过缓存数据来减少对...尽管Ehcache已经发展到了更高级的版本,但学习老版本可以帮助我们更好地理解缓存机制的发展历程,也能为理解和使用新版本打下基础。

    spring+ehcache demo

    【Spring + Ehcache 整合应用详解】 ...通过学习和实践这个示例,开发者可以深入了解Spring与Ehcache的集成,以及如何利用缓存提升应用程序的性能。同时,了解如何管理和配置数据库连接,也是Java开发中的基础技能。

    ehcache jar包 源码

    4. **缓存策略**:Ehcache支持多种缓存策略,包括LRU(最近最少使用)、LFU(最不经常使用)和FIFO(先进先出)。这些策略用于决定当缓存达到其最大容量时,哪些元素应该被移除。此外,Ehcache还支持定时过期和手动...

    项目优化之Ehcache页面缓存

    4. Ehcache配置 配置Ehcache主要包括以下几个方面: - 设置缓存大小:内存和硬盘的缓存容量需要预先设定,以防止溢出。 - 过期策略:可以通过设置时间或者访问频率来控制缓存的生命周期。 - 载入策略:定义何时从...

    spring+ehcache示例整合Demo

    Spring 和 Ehcache 是两个在Java开发中非常重要的框架。Spring 是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-...这个示例Demo是学习和理解Spring与Ehcache集成的一个很好的起点。

Global site tag (gtag.js) - Google Analytics