【问题标题】:Infinispan file-store creates binary folders with multiple .dat filesInfinispan 文件存储创建包含多个 .dat 文件的二进制文件夹
【发布时间】:2020-05-02 17:36:19
【问题描述】:

我正在使用下面的 infinispan 配置文件并遇到了一个奇怪的问题。启动时,应用程序创建多个文件夹(字节数组 0 到 255 的每个数字一个),每个文件夹包含 .dat 文件(在我的例子中是 idempotent.dat)。对于所有创建的文件,文件的内容也是 FCS1。

我所期待的是它会创建一个包含所有缓存对象的单个文件 (/ap/efts/data/stage/cache/idempotent.dat)。 有人可以确定导致此问题的原因吗?我正在使用 camel-infinispan 组件来创建基于 Infinispan 的幂等存储库。

注意:这在 infinispan 7.0 版中可以正常工作。作为参考,我还提供了 infinispan 7.0 配置文件以及幂等存储库的 spring bean 配置。

infinispan.xml (10.0)

<?xml version="1.0" encoding="UTF-8"?>
<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="urn:infinispan:config:10.0 http://www.infinispan.org/schemas/infinispan-config-10.0.xsd" 
    xmlns="urn:infinispan:config:10.0">

    <cache-container default-cache="idempotent">
        <local-cache name="idempotent">
            <expiration lifespan="1800000" max-idle="1800000" interval="60000" />
            <persistence passivation="true">
                <file-store path="/ap/efts/data/stage/cache" purge="true">
                    <write-behind thread-pool-size="5" />
                </file-store>
            </persistence>
            <memory>
                <binary eviction="MEMORY" size="1000000" />
            </memory>
        </local-cache>
    </cache-container>
</infinispan>

infinispan.xml (7.0)

<?xml version="1.0" encoding="UTF-8"?>
<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:infinispan:config:7.0 http://www.infinispan.org/schemas/infinispan-config-7.0.xsd"
    xmlns="urn:infinispan:config:7.0">

    <cache-container default-cache="default">
        <local-cache name="idempotent">
            <eviction max-entries="10000" strategy="LIRS"/>
            <persistence passivation="false">
                <file-store path="/ap/efts/data/stage/cache" max-entries="10000" purge="false">
                </file-store>
            </persistence>
        </local-cache>
    </cache-container>
</infinispan>

spring bean 配置

    <bean id="cacheManager" class="org.infinispan.manager.DefaultCacheManager" init-method="start" destroy-method="stop">
        <constructor-arg type="java.lang.String" value="infinispan.xml"/>
    </bean>

    <bean id="infinispanRepo" class="org.apache.camel.component.infinispan.processor.idempotent.InfinispanIdempotentRepository"
        factory-method="infinispanIdempotentRepository">
        <constructor-arg ref="cacheManager" />
        <constructor-arg value="idempotent" />
    </bean>

【问题讨论】:

    标签: apache-camel infinispan


    【解决方案1】:

    它为每个段创建一个文件(内部缓存是按段组织的)。默认值为 256。这使得诸如迭代之类的操作更快。 您可以通过将segmented="false" 属性添加到file-store 元素来禁用商店级别的分段

    【讨论】:

    • 谢谢@Tristan。我必须使用 infinispan 10.0.1,因为它是 camel-infinispan 依赖项中可用的最新版本。在该版本中,分段属性不适用于文件存储。但是我看到它存在于 10.1 版本中。 infinispan 10.0.1 中是否有另一种方法可以关闭分段?感谢您的帮助。
    • 您可以升级到 Infinispan 10.1:Camel 连接器将正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 2011-12-25
    • 2021-04-26
    • 2019-02-28
    • 2021-11-02
    相关资源
    最近更新 更多