目标
我有一个在嵌入式+复制模式下使用Infinispan的集群。集群大小仅为2个系统。为了让通过使用使用复制队列的异步复制来检查性能的提高,我做了一些实验,其细节如下所示
下面是我使用的基本测试设置
集群:带有以下infinispan.xml代码的简单2节点集群:我使用"async_repl_cache“的配置(请参阅下面粘贴的infinispan.xml)作为模板- config创建了一个异步缓存,并且我不覆盖以下任何配置
templateCfg = ecManager.getCacheConfiguration("async_repl_cache");
ecManager.defineConfiguration(cacheName, templateCfg);版本:我在嵌入式模式下使用了Infinispan5.3.0
Infinispan XML
<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>观测
org.infinispan.remoting.ReplicationQueueImpl的org.infinispan.remoting.ReplicationQueueImpl方法,以便确保队列被用于复制远程调用。我注意到这个方法从未被调用过put方法的调用是否可以被跟踪以找到到org.infinispan.remoting.ReplicationQueueImpl的方法。我注意到RPC的整个调用堆栈都是在调用方的线程中创建的,而不是在scheduled-replication 线程中进行的。问题
尽管使用异步配置,但我推断复制正在同步进行。那么,如果我在配置中遗漏了什么,请让我知道好吗?
不知道这是不是有关联-但是.我可以看到,状态传输在节点上正确地进行,该节点在第一个节点启动和接收所有数据后稍晚一点加入,没有任何不一致之处。
发布于 2014-07-13 12:26:10
(作为一种评论,这更合适,但我没有足够的声誉。)
从你的描述中,我感觉到你的测试是这样的:
这将导致从第一节点到第二节点的状态转移。如果第二个节点已经在运行,复制队列将仅在步骤2中使用。
因此,我的建议是首先启动两个节点,然后执行puts操作。
https://stackoverflow.com/questions/24654073
复制相似问题