6.16. 创建自定义缓存存储实现
您可以通过 Data Grid persistent SPI 创建自定义缓存存储。
6.16.1. 数据网格持久性 SPI
					Data Grid Service Provider Interface (SPI)通过 NonBlockingStore 接口为外部存储启用读写操作,并具有以下功能:
				
- JCache 兼容供应商的可移植性
- 
								数据网格使用处理块代码的适配器,在 NonBlockingStore和JSR-107JCache 规范之间保持兼容性。
- 简化的事务集成
- 数据网格会自动处理锁定,因此您的实施不需要协调对持久性存储的并发访问。根据您使用的锁定模式,通常不会发生对同一密钥的并发写入。但是,您应该期望对持久存储上的操作源自多个线程,并创建实施来容许此行为。
- 并行迭代
- 数据网格允许您迭代带有多个线程的持久存储条目。
- 减少序列化,从而减少 CPU 用量
- 数据网格以序列化格式公开存储的条目,可远程传输。因此,Data Grid 不需要对从持久性存储检索的条目进行反序列化,然后在写入线时再次序列化。
6.16.2. 创建缓存存储
					使用 NonBlockingStore API 的实现创建自定义缓存存储。
				
流程
- 实施适当的数据网格持久的 SPI。
- 
							如果含有自定义配置,则使用 @ConfiguredBy注释给存储类标注。
- 如果需要,创建自定义缓存存储配置和构建器。 - 
									扩展 AbstractStoreConfiguration和AbstractStoreConfigurationBuilder。
- (可选)将以下注解添加到存储配置类中,以确保您的自定义配置构建器从 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>
<distributed-cache>
  <persistence>
    <store class="org.infinispan.persistence.example.MyInMemoryStore" />
  </persistence>
</distributed-cache>JSON
YAML
distributedCache:
  persistence:
    store:
      class: "org.infinispan.persistence.example.MyInMemoryStore"
distributedCache:
  persistence:
    store:
      class: "org.infinispan.persistence.example.MyInMemoryStore"ConfigurationBuilder
Configuration config = new ConfigurationBuilder()
            .persistence()
            .addStore(CustomStoreConfigurationBuilder.class)
            .build();
Configuration config = new ConfigurationBuilder()
            .persistence()
            .addStore(CustomStoreConfigurationBuilder.class)
            .build();6.16.4. 部署自定义缓存存储
要将缓存存储实施用于 Data Grid Server,您必须为其提供 JAR 文件。
先决条件
- 如果数据网格服务器正在运行,停止该服务器。 - 数据网格仅在启动时加载 JAR 文件。 
流程
- 在 JAR 文件中打包您的自定义缓存存储实施。
- 
							将您的 JAR 文件添加到 Data Grid Server 安装的 server/lib目录中。