6.16. 创建自定义缓存存储实现


您可以通过 Data Grid persistent SPI 创建自定义缓存存储。

6.16.1. 数据网格持久性 SPI

Data Grid Service Provider Interface (SPI)通过 NonBlockingStore 接口为外部存储启用读写操作,并具有以下功能:

JCache 兼容供应商的可移植性
数据网格使用处理块代码的适配器,在 NonBlockingStoreJSR-107 JCache 规范之间保持兼容性。
简化的事务集成
数据网格会自动处理锁定,因此您的实施不需要协调对持久性存储的并发访问。根据您使用的锁定模式,通常不会发生对同一密钥的并发写入。但是,您应该期望对持久存储上的操作源自多个线程,并创建实施来容许此行为。
并行迭代
数据网格允许您迭代带有多个线程的持久存储条目。
减少序列化,从而减少 CPU 用量
数据网格以序列化格式公开存储的条目,可远程传输。因此,Data Grid 不需要对从持久性存储检索的条目进行反序列化,然后在写入线时再次序列化。

6.16.2. 创建缓存存储

使用 NonBlockingStore API 的实现创建自定义缓存存储。

流程

  1. 实施适当的数据网格持久的 SPI。
  2. 如果含有自定义配置,则使用 @ConfiguredBy 注释给存储类标注。
  3. 如果需要,创建自定义缓存存储配置和构建器。

    1. 扩展 AbstractStoreConfigurationAbstractStoreConfigurationBuilder
    2. (可选)将以下注解添加到存储配置类中,以确保您的自定义配置构建器从 XML 解析您的缓存存储配置:

      • @ConfigurationFor
      • @BuiltBy

        如果没有添加这些注解,则 CustomStoreConfigurationBuilder 会解析 AbstractStoreConfiguration 中定义的常见存储属性,并且任何额外元素都会被忽略。

        注意

        如果配置没有声明 @ConfigurationFor 注释,当 Data Grid 初始化缓存时,会记录警告消息。

6.16.3. 自定义缓存存储配置示例

以下示例演示了如何使用自定义缓存存储实现配置 Data Grid:

XML

<distributed-cache>
  <persistence>
    <store class="org.infinispan.persistence.example.MyInMemoryStore" />
  </persistence>
</distributed-cache>

JSON

{
  "distributed-cache": {
    "persistence" : {
      "store" : {
        "class" : "org.infinispan.persistence.example.MyInMemoryStore"
      }
    }
  }
}

YAML

distributedCache:
  persistence:
    store:
      class: "org.infinispan.persistence.example.MyInMemoryStore"

ConfigurationBuilder

Configuration config = new ConfigurationBuilder()
            .persistence()
            .addStore(CustomStoreConfigurationBuilder.class)
            .build();

6.16.4. 部署自定义缓存存储

要将缓存存储实施用于 Data Grid Server,您必须为其提供 JAR 文件。

先决条件

  • 如果数据网格服务器正在运行,停止该服务器。

    数据网格仅在启动时加载 JAR 文件。

流程

  1. 在 JAR 文件中打包您的自定义缓存存储实施。
  2. 将您的 JAR 文件添加到 Data Grid Server 安装的 server/lib 目录中。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.