首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 一个treecache缓存集群的问题 [已结贴,结贴人:diaomin81]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-08 19:14:14 楼主

    各位好,最近在玩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是否有问题,拜请各位高手指教指教
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-08 22:36:031楼 得分:0
    请检查一下CacheMode是否为LOCAL,如果是请改为REPL_ASYNC或REPL_SYNC
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-09 09:37:332楼 得分:0
    已经是REPL_SYNC了
    我用的是jboss4.2.1,我在我的发布目录里放了treecache.xml,并且直接修改里面的内容来用,这也可以吗?还是我需要再写另外一个treecache的配置文件才能实现集群?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-10 10:52:023楼 得分:0
    lz把treecache.xml贴出来看看吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-10 16:11:274楼 得分:0
    <?xml version="1.0" encoding="UTF-8"?>
    <server>
        <classpath codebase="./lib" archives="jboss-cache.jar, jgroups.jar"/>
        <mbean code="org.jboss.cache.TreeCache"
            name="jboss.cache:service=CustomTreeCache">
            <depends>jboss:service=Naming </depends>
            <depends>jboss:service=TransactionManager </depends>
            <attribute name="TransactionManagerLookupClass">
                  org.jboss.cache.GenericTransactionManagerLookup </attribute>

            <attribute name="NodeLockingScheme">PESSIMISTIC </attribute>

            <attribute name="IsolationLevel">REPEATABLE_READ </attribute>
            <attribute name="CacheMode">REPL_SYNC </attribute>

            <attribute name="UseReplQueue">false </attribute>

            <attribute name="ReplQueueInterval">0 </attribute>
            <attribute name="ReplQueueMaxElements">0 </attribute>
            <attribute name="ClusterName">TreeCache-Cluster </attribute>
    <attribute name="ClusterConfig">
                <config>
                    <UDP mcast_addr="224.0.0.10" 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="false"/>
                    <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>
            <attribute name="FetchInMemoryState">false </attribute>
            <attribute name="SyncReplTimeout">20000 </attribute>
            <attribute name="LockAcquisitionTimeout">15000 </attribute>
            <attribute name="EvictionPolicyClass"> </attribute>
          <attribute name="UseMarshalling">false </attribute>
        </mbean>
    </server>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-10 16:13:385楼 得分:0
    麻烦JBossWeek帮忙看看,不胜感激,另外弱弱的问一句,是不是一定要启动all模式啊?我启动的是default模式
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-11 12:34:236楼 得分:20
    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();
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-11 14:47:537楼 得分:0
    谢谢JBossWeek,我仔细研究下试试看
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-01-14 10:33:408楼 得分:0
    问题已经解决了,主要是以为我对jboss平台不熟悉,把配置文件搞错了的原因,配置文件的内容确实没问题,经过对配置文件名和代码的一些调整,现在已经可以实现缓存的分布了,谢谢JBossWeek的帮助。
    我不知道咋转分给别人, 现在试试,万一收不到还请见谅
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-05 11:32:339楼 得分:0
    diaomin81 能不发个源码啊。。我也在学习中。最近配了一下,一运行就报错
    org.hibernate.HibernateException: could not instantiate CacheProvider: net.sf.hibernate.cache.TreeCacheProvider
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved