一个treecache缓存集群的问题
各位好,最近在玩jboss和treecache,真是折磨人啊.我现在遇到一个treecache的问题,我配置的集群设置,似乎没有生效,配置内容如下:
<attribute name="ClusterConfig">
<config>
<UDP mcast_addr="224.0.0.1" mcast_port="48866"
ip_ttl="64" ip_mcast="true"
mcast_send_buf_size="150000" mcast_recv_buf_size="80000"
ucast_send_buf_size="150000" ucast_recv_buf_size="80000"
loopback="true"/>
<PING timeout="2000" num_initial_members="3"
up_thread="false" down_thread="false"/>
<MERGE2 min_interval="10000" max_interval="20000"/>
<FD shun="true" up_thread="true" down_thread="true" />
<!-- <FD_SOCK/>-->
<VERIFY_SUSPECT timeout="1500"
up_thread="false" down_thread="false"/>
<pbcast.NAKACK gc_lag="50" retransmit_timeout="600,1200,2400,4800"
max_xmit_size="8192" up_thread="false" down_thread="false"/>
<UNICAST timeout="600,1200,2400" window_size="100" min_threshold="10"
down_thread="false"/>
<pbcast.STABLE desired_avg_gossip="20000"
up_thread="false" down_thread="false"/>
<FRAG frag_size="8192"
down_thread="false" up_thread="false"/>
<pbcast.GMS join_timeout="5000" join_retry_timeout="2000"
shun="true" print_local_addr="true"/>
<pbcast.STATE_TRANSFER up_thread="true" down_thread="true"/>
</config>
</attribute>
而我对缓存进行的操作是:第一次查询的时候,把结果放到缓存中,第二次查询的时候,判断缓存中内容是否为null,如果是,查数据库,如果不是,则从缓存中读取,相关代码如下:
List messageList = new ArrayList();
Object obj=cache.get("/bbs/list", "message");
log.info("cache1------------------"+obj);
if(obj==null){
messageList=messageManager.getMessageList(messageForm.getRootId());
cache.put("/bbs/list","message",messageList);
}else{
messageList=(List)obj;
}
添加数据的时候,我会把缓存的值设置成null,像这样:
cache.put("/bbs/list", "message",null);
我遇到的问题是:两台机器只用级联线连接,互相能访问,但是两太机器的缓存都生效时,我做了如下操作:
1:我在2台机器上都做了查询操作,因为连接同一个库,结果当然一样
2:我在server1上增加数据,然后又进行了一次查询,server1上的结果变了,但是server2上的缓存似乎没接到通知,仍然没有改变
以前用过jcs,这种操作很简单,但是其稳定性很不好,不知道我这样操作treecache是否有问题,拜请各位高手指教指教
[解决办法]
1、配置没有问题
2、default模式可以使用jbosscache的集群服务,但是需要将jgroups.jar拷贝到default/lib目录下
3、你遇到的问题是不是代码的问题,给一段测试过的代码:
TreeCache cache = new TreeCache();
PropertyConfigurator config = new PropertyConfigurator();
config.configure(cache, "META-INF/cache-service.xml");
cache.startService();