首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Infinispan异步复制队列-配置时不使用

Infinispan异步复制队列-配置时不使用
EN

Stack Overflow用户
提问于 2014-07-09 12:45:26
回答 1查看 823关注 0票数 2

目标

我有一个在嵌入式+复制模式下使用Infinispan的集群。集群大小仅为2个系统。为了让通过使用使用复制队列的异步复制来检查性能的提高,我做了一些实验,其细节如下所示

下面是我使用的基本测试设置

集群:带有以下infinispan.xml代码的简单2节点集群:我使用"async_repl_cache“的配置(请参阅下面粘贴的infinispan.xml)作为模板- config创建了一个异步缓存,并且我不覆盖以下任何配置

代码语言:javascript
复制
   templateCfg = ecManager.getCacheConfiguration("async_repl_cache");
   ecManager.defineConfiguration(cacheName, templateCfg);

版本:我在嵌入式模式下使用了Infinispan5.3.0

Infinispan XML

代码语言:javascript
复制
<infinispan
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:infinispan:config:6.0 http://www.infinispan.org/schemas/infinispan-config-5.3.xsd"
    xmlns="urn:infinispan:config:5.3">
  <global>
    <transport nodeName="${nodeName}">
      <properties>
        <property name="configurationFile" value="jgroups_tcp.xml"/>
      </properties>
    </transport>

  </global>

  <default>
    <clustering mode="replication">
        <sync/>
    </clustering>
  </default>

  <namedCache name="repl">
    <!-- Use the configuration of the default cache as it is -->
  </namedCache>

  <namedCache name="async_repl_cache">
    <jmxStatistics enabled="true"/>
    <clustering mode="replication">
        <async useReplQueue="true" replQueueInterval="2000" />
    </clustering>
  </namedCache>


</infinispan>

观测

  • 我用带有50K条目的简单缓存执行了一个小测试。一个节点只执行puts,而另一个节点只从远程系统接收puts。这样做主要是为了获得同步模式和异步模式中明显的延迟度量差异。我注意到50K看跌的持续时间保持不变
  • 编写了一个简单的Btrace脚本来跟踪是否曾经调用org.infinispan.remoting.ReplicationQueueImplorg.infinispan.remoting.ReplicationQueueImpl方法,以便确保队列被用于复制远程调用。我注意到这个方法从未被调用过
  • 使用VisualVM的采样器查看对put方法的调用是否可以被跟踪以找到到org.infinispan.remoting.ReplicationQueueImpl的方法。我注意到RPC的整个调用堆栈都是在调用方的线程中创建的,而不是在scheduled-replication 线程中进行的。

问题

尽管使用异步配置,但我推断复制正在同步进行。那么,如果我在配置中遗漏了什么,请让我知道好吗?

不知道这是不是有关联-但是.我可以看到,状态传输在节点上正确地进行,该节点在第一个节点启动和接收所有数据后稍晚一点加入,没有任何不一致之处。

EN

回答 1

Stack Overflow用户

发布于 2014-07-13 12:26:10

(作为一种评论,这更合适,但我没有足够的声誉。)

从你的描述中,我感觉到你的测试是这样的:

  1. 启动第一节点
  2. 将数据放入第一个节点
  3. 启动第二节点

这将导致从第一节点到第二节点的状态转移。如果第二个节点已经在运行,复制队列将仅在步骤2中使用。

因此,我的建议是首先启动两个节点,然后执行puts操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24654073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档