原文地址如下:
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服务器:
分享到:
相关推荐
java ehcache terracotta 集群, 分布式缓存配置
ehcache的terracotta方案的比较.docx
jar包,官方版本,自测可用
jar包,官方版本,自测可用
ehcache-terracotta-2.4.5.jar,ehcache缓存所使用的JAR
EHCAHCE基于JGROUP的集群配置方案,内含相关配置文件,及配置说明
ehcache3集群相关资源,包括ehcache-clustered-3.10.0-kit、ehcache-3.10.0.jar、ehcache-clustered-3.10.0.jar、terracotta-3.7.7.tar.gz、ehcache-transactions-3.10.0.jar
此为ehcache的使用以及集群的使用,具体需要两台机子,将ehcache 的hostName替换相应的ip即可
jar包,官方版本,自测可用
Ehcache集群环境配置
Ehcache通过使用Jgroups做集群配置,更改每一个不同的jgroups.xml文件的端口号和IP,如果一台机器就使用127.0.0.1即可。配置好之后,把每台机器起来,就可以测试了。
ehcache集群同步配置实例加说明文档
hibernate ehcache.xml 配置详解
ehcache jgroups方式集群,根据网上的资料自己摸索修改的,欢迎下载
ehcache提供三种网络连接策略来实现集群,rmi,jgroup还有jms。这里只说rmi方式。同时ehcache可以可以实现多播的方式实现集群。也可以手动指定集群主机序列实现集群,本例应用手动指定。
ehcache二级缓存配置文件
ehcache集群方案
Ehcache2缓存区配置详解.pdf
介绍了ehcache缓存的基本原理和配置说明
Ehcache集群实例 Ehcache jgroups Ehcache rmi