具有共享索引的Infinispan分布式群集

时间:2014-05-08 14:06:28

标签: indexing hibernate-search master-slave infinispan distributed-caching

有没有人有一个工作示例,说明如何使用infinispan目录提供程序配置节点集群以共享索引?关于Infinispan的所有文档(文档严重缺乏顺便说一句)意味着它应该像设置一些属性一样简单,但无论我如何尝试我都无法使其工作。群集中的节点彼此之间找到了很好的结果,我可以在一个节点上获取操作并获取放在另一个节点上的对象。但是一旦我查询(使用索引),它就会开始失败。

我的infinispan配置:

<global>
        <transport clusterName="SomeCluster">
            <properties>
                <property name="configurationFile" value="jgroups-udp.xml" />
            </properties>
        </transport>
    </global>
    <namedCache name="access">
        <clustering mode="distribution" />
        <indexing enabled="true" indexLocalOnly="true">
            <properties>
                <property name="default.directory_provider" value="infinispan"/>
                <property name="default.worker.backend" value="jgroups"/>
            </properties>
        </indexing>
    </namedCache>

我还没有找到一个覆盖带有共享索引的分布式缓存的示例/教程,我认为我的google-fu很棒。我已经在infinispan社区论坛上询问过,但没有得到任何回复。

我得到的错误都与以下事实有关:只有一个节点能够写入索引(主节点)但上面的配置,根据Hibernet Search的一些文档应该使一个节点成为主节点,尽我所能,什么都不做。

编辑:我正在使用Infinispan 6.0.2.Final

1 个答案:

答案 0 :(得分:1)

而不是JGroups后端我使用InfinispanIndexManager - 这个经理已经提供了自己的后端。

<indexing enabled="true" indexLocalOnly="true">
   <properties>
      <property name="default.indexmanager" value="org.infinispan.query.indexmanager.InfinispanIndexManager" />
      <property name="default.exclusive_index_use" value="false" />
      <property name="default.metadata_cachename" value="lucene_metadata_repl" />
      <property name="default.data_cachename" value="lucene_data_dist" />
      <property name="default.locking_cachename" value="lucene_locking_repl" />
      <property name="lucene_version" value="LUCENE_36" />
   </properties>
</indexing>

现在,配置要集群(分发或复制)的所有缓存。如果不以这种方式指定缓存配置,则使用默认缓存配置创建三个缓存 - 默认情况下为非群集配置。 我不确定exclusive_index_use,但也许没有必要。

我同意Infinispan文档可能会更好,通常我不得不回避调查源代码。有关索引配置的示例,您可以查看infinispan-query模块/ src / test / resources。