第 4 章 配置数据网格缓存


借助 Data Grid,您可以以声明性和编程方式定义用于缓存的属性和选项。

声明性配置使用遵循 Data Grid 模式的 XML 文件。另一方面,编程配置使用 Data Grid API。

在大多数情况下,您可以使用声明性配置作为缓存定义的起点。在运行时,您可以以编程方式配置缓存来调优设置或指定附加属性。但是,Data Grid 提供灵活性,以便您可以选择声明性、编程或两者的组合。

4.1. 声明性配置

您可以通过在 infinispan.xml 中定义属性来配置数据网格缓存。

以下示例显示了 Data Grid 配置的基本结构:

<infinispan> 1
   <cache-container default-cache="local"> 2
      <transport stack="udp" cluster="mycluster"/> 3
      <local-cache name="local"/> 4
      <invalidation-cache name="invalidation"/> 5
      <replicated-cache name="replicated"/> 6
      <distributed-cache name="distributed"/> 7
   </cache-container>
</infinispan>
1
为 Data Grid 配置添加 root 元素。最低有效的配置是 & lt;infinispan />,但这提供了没有集群且没有缓存实例的基本功能。
2
定义容器中所有缓存的属性,并命名默认缓存。
3
定义集群缓存模式的传输属性。在前面的示例中,stack="udp" 指定默认的 JGroups UDP 传输堆栈,并命名 Data Grid 集群。
4
本地缓存。
5
无效的缓存。
6
复制缓存。
7
分布式缓存。

4.1.1. 缓存配置模板

借助 Data Grid,您可以定义可应用到多个缓存定义的配置模板,或用作复杂配置的基础。

例如,以下配置包含本地缓存的配置模板:

<infinispan>
   <cache-container default-cache="local"> 1
      <local-cache-configuration name="local-template"> 2
         <expiration interval="10000" lifespan="10" max-idle="10"/>
      </local-cache-configuration>
      <local-cache name="local" configuration="local-template" /> 3
   </cache-container>
</infinispan>
1
将 "local" 缓存指定为默认值。
2
定义名为 "local-template" 的配置模板,该模板定义本地缓存的过期策略。
3
命名使用配置模板的本地缓存实例。

配置模板的继承

配置模板也可以从其他模板继承,以扩展和覆盖设置。

注意

配置模板继承是分级。要使子配置模板从父级继承,您必须在父模板后面包含它。

以下是配置模板继承的示例:

<infinispan>
   <cache-container default-cache="local">
      <local-cache-configuration name="base-template"> 1
         <expiration interval="10000" lifespan="10" max-idle="10"/>
      </local-cache-configuration>

      <local-cache-configuration name="extended-template"
                                 configuration="base-template"> 2
         <expiration lifespan="20"/>
         <memory>
            <object size="2000"/>
         </memory>
      </local-cache-configuration>

      <local-cache name="local" configuration="base-template" /> 3
      <local-cache name="local-bounded" configuration="extended-template" /> 4
   </cache-container>
</infinispan>
1
定义名为"base-template"的配置模板,该模板定义本地缓存的过期策略。在本例中,"base-template"是父配置模板。
2
定义名为 "extended-template" 的配置模板,它继承了 "base-template" 的设置,修改 expiration 的 lifespan 属性,并将 memory 元素添加到配置中。在本例中,"extended-template"是"base-template"的子项。
3
命名使用 "base-template" 中的配置设置的本地缓存。
4
命名使用 "extended-template" 中的配置设置的本地缓存。
重要

对于具有多个值的元素(如 属性 )而言,配置模板继承是额外的。从父配置生成子配置合并值。

例如,& lt;property value_x="foo" /&gt; 在父配置中与 < property value_y="bar" /> 合并,以便在子配置中生成 &lt ;property value_x="foo" value_y="bar" />

4.1.2. 缓存配置通配符

您可以使用通配符将缓存定义与配置模板匹配。

<infinispan>
    <cache-container>
        <local-cache-configuration name="basecache*"> 1
            <expiration interval="10500" lifespan="11" max-idle="11"/>
        </local-cache-configuration>
        <local-cache name="basecache-1"/> 2
        <local-cache name="basecache-2"/> 3
    </cache-container>
</infinispan>
1
使用 * 通配符匹配任何以"basecache"开头的缓存名称。
2
命名使用 "basecache*" 配置模板的本地缓存 "basecache-1"。
3
将本地缓存命名为 "basecache-2",它使用 "basecache*" 配置模板。
注意

如果缓存名称与多个通配符匹配,则数据网格会抛出异常。

4.1.3. 多个配置文件

Data Grid 支持 XML 包含(XInclude),允许您在多个文件中分割配置。

例如,以下配置使用 XInclude :

<infinispan xmlns:xi="http://www.w3.org/2001/XInclude">
    <cache-container default-cache="cache-1">
        <xi:include href="local.xml" /> 1
    </cache-container>
</infinispan>
1
包括一个包含以下缓存定义的 local.xml 文件:
<local-cache name="mycache"/>

如果要将模式用于包含的片段,请使用 infinispan-config-fragment-11.0.xsd 模式:

include-with-schema.xml

<local-cache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="urn:infinispan:config:11.0 https://infinispan.org/schemas/infinispan-config-fragment-11.0.xsd"
             xmlns="urn:infinispan:config:11.0"
             name="mycache"/>

注意

Data Grid 配置只提供对 XInclude 规格的最小支持。例如,您无法使用 xpointer 属性,xi:fallback 元素、文本处理或内容协商。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.