`

Ehcache与terracotta集群配置

 
阅读更多
原文地址如下:
http://bluewind1521.iteye.com/blog/1636283
从启动结果中可以看到NodeID[XXXXXX] joined the cluster,节点已加入集群,代表terracotta结群建立成功,下面运行测试代码:
A服务器:
Java代码  收藏代码
<span style="font-size: medium;">import net.sf.ehcache.Cache; 
import net.sf.ehcache.CacheManager; 
import net.sf.ehcache.Element; 
 
public class EhcacheDemo { 
     
    private static final CacheManager CACHE_MANAGER = CacheManager.create(); 
     
    public static Cache getCache(String cacheName){ 
        return CACHE_MANAGER.getCache(cacheName); 
    } 
     
    public static Object getObjectValue(String key){ 
         Element e = getCache("demoCache").get(key); 
         Object val = null; 
         if(e == null){ 
                System.out.println("缓存中不存在,读取数据"); 
                /**用于测试集群是否正常工作,当缓存中的数据超时时加入新数据,同时将B服务器中的terracotta服务器关闭,测试B服务器中的程序是否能够获取数据
                 * 
                 * */ 
                EhcacheDemo.put("name", "11111"); 
                EhcacheDemo.put("password", "333"); 
         }else{ 
             val = e.getObjectValue(); 
         } 
         return val; 
    } 
     
    public static void put(String key, Object val){ 
        Element e = new Element(key, val); 
        getCache("demoCache").put(e); 
    } 
     
    public static void delete(String key){ 
        getCache("demoCache").remove(key); 
    } 
     
     
    public void close(){ 
        CACHE_MANAGER.shutdown(); 
    } 
 
    /**
     * @param args
     */ 
    public static void main(String[] args) { 
        EhcacheDemo.put("name", "sssssss"); 
        EhcacheDemo.put("password", "22222"); 
        Thread t = new Thread(new Runnable() { 
             
            @Override 
            public void run() { 
                while(true){ 
                    try { 
                        Thread.currentThread().sleep(10000L); 
                    } catch (InterruptedException e) { 
                        e.printStackTrace(); 
                    } 
                    System.out.println(EhcacheDemo.getObjectValue("name") +"   "+ getObjectValue("password")); 
                } 
                 
            } 
        }); 
 
        t.start(); 
    } 
 

</span> 

B服务器:
Java代码  收藏代码
<span style="font-size: medium;">import net.sf.ehcache.Cache; 
import net.sf.ehcache.CacheManager; 
import net.sf.ehcache.Element; 
 
public class EhcacheDemo { 
     
    private static final CacheManager CACHE_MANAGER = CacheManager.create(); 
     
    public static Cache getCache(String cacheName){ 
        return CACHE_MANAGER.getCache(cacheName); 
    } 
     
    public static Object getObjectValue(String key){ 
         Element e = getCache("demoCache").get(key); 
         Object val = null; 
         if(e == null){ 
                System.out.println("缓存中不存在,读取数据"); 
         }else{ 
             val = e.getObjectValue(); 
         } 
         return val; 
    } 
     
    public static void put(String key, Object val){ 
        Element e = new Element(key, val); 
        getCache("demoCache").put(e); 
    } 
     
    public static void delete(String key){ 
        getCache("demoCache").remove(key); 
    } 
     
     
    public void close(){ 
        CACHE_MANAGER.shutdown(); 
    } 
 
    /**
     * @param args
     */ 
    public static void main(String[] args) { 
        EhcacheDemo.put("name", "sssssss"); 
        EhcacheDemo.put("password", "22222"); 
        Thread t = new Thread(new Runnable() { 
             
            @Override 
            public void run() { 
                while(true){ 
                    try { 
                        Thread.currentThread().sleep(10000L); 
                    } catch (InterruptedException e) { 
                        e.printStackTrace(); 
                    } 
                    System.out.println(EhcacheDemo.getObjectValue("name") +"   "+ getObjectValue("password")); 
                } 
                 
            } 
        }); 
 
        t.start(); 
    } 
 

</span> 


A与B服务器中的程序有一点区别,详见注释部分,主要为了测试集群是否工作正常,当一个节点挂掉之后,B服务器上的测试程序是否能获取新的缓存数据。
同时运行2个测试程序后,我们可以观察terracotta是否正常工作,运行ehcache\terracotta\bin下的dev-console.bat并连接到2个服务器的terracotta服务器:
分享到:
评论

相关推荐

    ehcache-terracotta代码配置

    当与Terracotta结合使用时,Ehcache可以实现分布式缓存,使得多台服务器上的应用可以共享同一份缓存数据,从而构建高可用的集群环境。在本篇中,我们将深入探讨如何在Java项目中配置Ehcache与Terracotta来实现这一...

    ehcache使用,以及集群配置

    **Ehcache 使用详解与集群配置** Ehcache 是一个广泛使用的开源Java缓存系统,它提供了内存和磁盘存储,以及对缓存数据的分布式处理能力。在Java应用程序中,Ehcache能够显著提高性能,减少数据库负载,通过缓存...

    Ehcache集群实例

    4. **Ehcache集群配置**:要设置Ehcache集群,首先需要配置`ehcache.xml`或使用代码配置。在配置中,需要指定集群使用的通信机制,例如JGroups配置文件。JGroups配置文件定义了集群的网络拓扑、传输协议、心跳策略等...

    ehcache集群方案

    理解并掌握Ehcache的集群配置、复制策略、一致性模型以及JGroups的相关知识,对于构建高性能、高可用的分布式缓存系统至关重要。在实际应用中,应根据业务需求和环境特点,灵活调整和优化这些配置,以获得最佳的性能...

    集群环境中使用_EhCache_缓存系统&Ehcache配置文件的详细说明

    2. 节点发现机制:确保所有节点都能正确发现并加入到集群中,通常通过配置 Terracotta 的集群配置文件实现。 3. 网络稳定性:分布式缓存对网络依赖性强,保持网络稳定至关重要。 总结,EhCache在集群环境中的应用...

    Ehcache集群使用

    它支持本地缓存、分布式缓存以及集群配置,使得多台服务器之间可以共享缓存数据,从而实现高可用性和可扩展性。在本文中,我们将深入探讨如何在实际项目中配置和使用 Ehcache 集群。 首先,我们需要理解 Ehcache ...

    ehcache所需jar包

    配置文件可以定义缓存的大小、过期策略、缓存分区、 Terracotta集群设置等。此外,还应考虑与其他依赖项(如Spring、Hibernate等)的集成,以在更复杂的应用场景下使用Ehcache。 在实际应用中,Ehcache不仅可以用于...

    ehcache基本原理及配置

    3. **&lt;terracotta&gt;** 元素: 如果需要配置集群环境,可以设置Terracotta服务器的相关参数,使Ehcache支持分布式缓存。 4. **** 元素: 定义默认缓存配置,适用于所有未在中定义的缓存实例。 5. **** 和 **** 子元素:...

    ehcache缓存的jar包和配置文件

    - `&lt;terracotta&gt;`元素(可选):如果需要集群支持,可以配置Ehcache与Terracotta服务器通信。 3. 使用Ehcache: - 引入依赖:在项目中添加Ehcache的JAR包,如`ehcache.jar`。 - 创建缓存管理器:使用`...

    Ehcache 3(ehcache-clustered-3.8.1-kit.zip)

    在集群环境下,Ehcache 3 使用 Terracotta Server Array (TSA) 进行集群协调和数据同步。TSA 是一个专门用于Ehcache集群的服务器,它提供了分布式锁服务、数据复制和故障检测等功能。当一个节点更新缓存时,TSA会...

    ehcache-clustered-3.3.1-kit.zip

    你需要在集群中的所有节点上安装并启动Terracotta,然后配置Ehcache连接到同一服务器集群。 3. **数据分片**:Ehcache集群通过数据分片来实现分布式存储。每个节点负责一部分缓存数据,当数据请求到来时,Ehcache会...

    ehcache 例子

    2. **集群配置**:Ehcache的集群实现依赖于Terracotta服务器,它提供了一种分布式缓存管理机制。通过TCP/IP网络连接,各个节点间可以进行数据同步。 3. **复制策略**:Ehcache提供了多种复制策略,如全复制(所有...

    ehcache2.6.5.rar

    在版本2.6.5中,Ehcache提供了一套完整的缓存解决方案,包括本地缓存、分布式缓存和 Terracotta 集群支持。 Ehcache 2.6.5的关键特性包括: 1. **内存管理**:Ehcache 使用LRU(Least Recently Used)策略来管理...

    ehcache缓存依赖的jar

    Ehcache可能与其他库有依赖关系,比如为了实现分布式缓存,可能需要`terracotta-apis`和`terracotta-platform`等相关JARs。这些库提供了集群和分布式缓存的支持,使得Ehcache能够在多台服务器之间共享数据,提高可...

    ehcache-clustered-3.8.1-kit.zip

    然后在Ehcache配置文件(如`ehcache.xml`)中指定集群配置,包括连接到服务器的URL、端口、集群名称等。例如: ```xml &lt;cluster name="myCluster" url="terracotta://localhost:9510/my-app"&gt; ``` 其中...

    EhCache-Cluster-Tester.zip_cluster_cluster html网页_ehcache_java

    在“EhCache-Cluster-Tester.zip”这个压缩包中,包含了一个关于EhCache集群配置和测试的实例,这对于理解如何在分布式环境中使用EhCache至关重要。 EhCache的集群功能允许多个节点共享同一份缓存数据,实现高可用...

    Ehcache 简单的监控

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

    ehcache官方文档2.9

    **三、配置与管理** 1. **XML配置**: Ehcache可以通过XML配置文件进行配置,包括缓存大小、存活时间、过期策略等。 2. **编程配置**: 除了XML,也可以在代码中动态配置和管理缓存。 3. **缓存策略**: 包括LRU(最近...

    terracotta-ee-4.1.2.jar,terracotta-license.key

    3. **Clients SDK**:提供API和库,使得Java应用可以与Terracotta集群交互,实现数据的分布式存储和访问。 **terracotta-license.key:** 这个文件是Terracotta的许可证密钥,用于验证和激活企业版的功能。没有有效...

Global site tag (gtag.js) - Google Analytics