原文地址如下:
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服务器:
分享到:
相关推荐
当与Terracotta结合使用时,Ehcache可以实现分布式缓存,使得多台服务器上的应用可以共享同一份缓存数据,从而构建高可用的集群环境。在本篇中,我们将深入探讨如何在Java项目中配置Ehcache与Terracotta来实现这一...
**Ehcache 使用详解与集群配置** Ehcache 是一个广泛使用的开源Java缓存系统,它提供了内存和磁盘存储,以及对缓存数据的分布式处理能力。在Java应用程序中,Ehcache能够显著提高性能,减少数据库负载,通过缓存...
4. **Ehcache集群配置**:要设置Ehcache集群,首先需要配置`ehcache.xml`或使用代码配置。在配置中,需要指定集群使用的通信机制,例如JGroups配置文件。JGroups配置文件定义了集群的网络拓扑、传输协议、心跳策略等...
理解并掌握Ehcache的集群配置、复制策略、一致性模型以及JGroups的相关知识,对于构建高性能、高可用的分布式缓存系统至关重要。在实际应用中,应根据业务需求和环境特点,灵活调整和优化这些配置,以获得最佳的性能...
2. 节点发现机制:确保所有节点都能正确发现并加入到集群中,通常通过配置 Terracotta 的集群配置文件实现。 3. 网络稳定性:分布式缓存对网络依赖性强,保持网络稳定至关重要。 总结,EhCache在集群环境中的应用...
它支持本地缓存、分布式缓存以及集群配置,使得多台服务器之间可以共享缓存数据,从而实现高可用性和可扩展性。在本文中,我们将深入探讨如何在实际项目中配置和使用 Ehcache 集群。 首先,我们需要理解 Ehcache ...
配置文件可以定义缓存的大小、过期策略、缓存分区、 Terracotta集群设置等。此外,还应考虑与其他依赖项(如Spring、Hibernate等)的集成,以在更复杂的应用场景下使用Ehcache。 在实际应用中,Ehcache不仅可以用于...
3. **<terracotta>** 元素: 如果需要配置集群环境,可以设置Terracotta服务器的相关参数,使Ehcache支持分布式缓存。 4. **** 元素: 定义默认缓存配置,适用于所有未在中定义的缓存实例。 5. **** 和 **** 子元素:...
- `<terracotta>`元素(可选):如果需要集群支持,可以配置Ehcache与Terracotta服务器通信。 3. 使用Ehcache: - 引入依赖:在项目中添加Ehcache的JAR包,如`ehcache.jar`。 - 创建缓存管理器:使用`...
在集群环境下,Ehcache 3 使用 Terracotta Server Array (TSA) 进行集群协调和数据同步。TSA 是一个专门用于Ehcache集群的服务器,它提供了分布式锁服务、数据复制和故障检测等功能。当一个节点更新缓存时,TSA会...
你需要在集群中的所有节点上安装并启动Terracotta,然后配置Ehcache连接到同一服务器集群。 3. **数据分片**:Ehcache集群通过数据分片来实现分布式存储。每个节点负责一部分缓存数据,当数据请求到来时,Ehcache会...
2. **集群配置**:Ehcache的集群实现依赖于Terracotta服务器,它提供了一种分布式缓存管理机制。通过TCP/IP网络连接,各个节点间可以进行数据同步。 3. **复制策略**:Ehcache提供了多种复制策略,如全复制(所有...
在版本2.6.5中,Ehcache提供了一套完整的缓存解决方案,包括本地缓存、分布式缓存和 Terracotta 集群支持。 Ehcache 2.6.5的关键特性包括: 1. **内存管理**:Ehcache 使用LRU(Least Recently Used)策略来管理...
Ehcache可能与其他库有依赖关系,比如为了实现分布式缓存,可能需要`terracotta-apis`和`terracotta-platform`等相关JARs。这些库提供了集群和分布式缓存的支持,使得Ehcache能够在多台服务器之间共享数据,提高可...
然后在Ehcache配置文件(如`ehcache.xml`)中指定集群配置,包括连接到服务器的URL、端口、集群名称等。例如: ```xml <cluster name="myCluster" url="terracotta://localhost:9510/my-app"> ``` 其中...
在“EhCache-Cluster-Tester.zip”这个压缩包中,包含了一个关于EhCache集群配置和测试的实例,这对于理解如何在分布式环境中使用EhCache至关重要。 EhCache的集群功能允许多个节点共享同一份缓存数据,实现高可用...
通过这些示例,我们可以学习如何设置Ehcache的分布式特性,例如使用Terracotta服务器进行集群缓存,以及如何处理分布式环境下的缓存一致性问题。 总结来说,Ehcache的监控涉及了多个方面,包括但不限于使用JMX、Web...
**三、配置与管理** 1. **XML配置**: Ehcache可以通过XML配置文件进行配置,包括缓存大小、存活时间、过期策略等。 2. **编程配置**: 除了XML,也可以在代码中动态配置和管理缓存。 3. **缓存策略**: 包括LRU(最近...
3. **Clients SDK**:提供API和库,使得Java应用可以与Terracotta集群交互,实现数据的分布式存储和访问。 **terracotta-license.key:** 这个文件是Terracotta的许可证密钥,用于验证和激活企业版的功能。没有有效...