第 1 章 Data Grid 发行信息
了解新功能并获取最新的 Data Grid 版本信息。
1.1. Data Grid 8.3.0 中的新功能 复制链接链接已复制到粘贴板!
Data Grid 8.3 提高了可用性、提高性能并提高安全性。了解新内容。
1.1.1. Java 17 支持 复制链接链接已复制到粘贴板!
Data Grid 8.3 为嵌入式和远程缓存完全支持 Java 17。
1.1.2. Data Grid Helm Chart 复制链接链接已复制到粘贴板!
Data Grid 8.3 引入了一个 Helm chart,用于在 Red Hat OpenShift 上部署 Data Grid 集群。Data Grid Helm Chart 会为无法部署 Data Grid Operator 管理的集群或需要手动配置、部署和管理数据中心集群的场景提供替代方案。
Data Grid Helm Chart 包括 deploy.infinispan
值,可让您使用 Helm 客户端或通过 OpenShift Web 控制台将自定义配置应用到 Data Grid Server 节点。
1.1.3. Data Grid 配置 复制链接链接已复制到粘贴板!
Data Grid 提供声明式和编程配置属性,用于自定义缓存和底层机制,如安全性和集群传输。
polyglot 配置
Data Grid 8.3 可让您创建 JSON 和 YAML 格式的声明配置,除了 XML 外。您可以为任何部署平台重复使用相同的 Data Grid 配置文件:Red Hat Enterprise Linux (RHEL)或 Red Hat OpenShift via Data Grid Operator 或 Data Grid Helm Chart。
动态缓存的可变配置属性
Data Grid 8.3 可让您在运行时动态创建的缓存修改某些配置属性。这意味着您不再需要删除,然后重新创建缓存以更改配置属性,如 lifetimespan for expiration 或 max-count
进行驱除。
对缓存配置的更改必须与现有配置兼容。例如,您无法修改缓存配置,将 replicated-cache
元素更改为 distributed-cache
,或使用 max-count
属性,而不是 max-size
属性。
更改可变配置属性
Data Grid 命令行界面(CLI)和 REST API 提供了以下机制:
- 检索可变配置属性的列表。
- 在运行时更改可变配置属性。
缓存大小统计
从 Data Grid 8.3 开始,currentNumberOfEntries
统计默认返回 -1
以提高性能。
现在,如果要恢复这个统计 的准确值,Data Grid 还为指标配置提供准确的大小
属性。但是,这是资源密集型计算,建议只在开发环境中使用。将值设为 true
,如下所示:
声明
<cache-container> <metrics accurate-size="true"/> </cache-container>
<cache-container>
<metrics accurate-size="true"/>
</cache-container>
programmatic
GlobalConfigurationBuilder b = new GlobalConfigurationBuilder(); b.metrics().accurateSize(true);
GlobalConfigurationBuilder b = new GlobalConfigurationBuilder();
b.metrics().accurateSize(true);
计划在以后的 Data Grid 版本中提供大约缓存大小统计的指标。
1.1.4. 持久性存储 复制链接链接已复制到粘贴板!
Data Grid 8.3 为使用持久性存储提供新的改进的缓存存储实现。
基于文件的默认缓存存储实现
为了通过使用较少的内存资源并避免碎片来提高性能,SoftIndexFileStore
现在是 Data Grid 中基于文件的缓存存储的默认实现。从 8.3 开始,包括在缓存配置中包括 文件存储
持久性,会创建一个基于软索引文件的缓存存储,而不是单文件缓存存储。
当您升级到 8.3 时,数据平面会自动将任何文件
存储配置迁移到 SoftIndexFileStore
。
如果您从早期版本迁移到 Data Grid 8.3,且您的缓存配置包括 soft-index-file-store
元素,您应该将其转换为 file-store
元素。如需更多信息,请参阅 迁移到 Data Grid 8。
Data Grid 8.2
Data Grid 8.3
SQL 缓存存储
Data Grid 8.3 引入了 SQL 缓存存储,简化了对持久性存储中的数据的访问,并通过 JDBC 连接预加载缓存。
您可以创建两种类型的 SQL 缓存存储:
- 表
- Data Grid 从单个数据库表中加载条目。
- 查询
- Data Grid 使用 SQL 查询来加载条目,并执行插入、更新和删除操作。
JDBC 连接工厂
从 Data Grid 8.3 Data Grid 开始,在 org.infinispan.persistence.jdbc.common.configuration
软件包中为 JDBC 连接提供了 ConnectionFactory
实现。您可以在 SQL 缓存存储和基于 JDBC 字符串的缓存存储中使用这些连接工厂。
1.1.5. Data Grid Server 复制链接链接已复制到粘贴板!
数据中心服务器在专用 Java 虚拟机(JVM)中运行,并为远程缓存提供可扩展且容错的集群。
分布式安全域
Data Grid Server 现在允许您将多个安全域合并到一个域中。在验证用户时,Data Grid Server 会依次使用每个安全域,直到找到可以执行身份验证的安全域。
例如,以下安全域包含一个 LDAP 域和一个属性 realm 和 distributed-realm
元素:
多个端点配置
您可以将 Data Grid 服务器配置为将多个端点绑定到不同的套接字,并使用不同的安全域。
以下示例中,以下片段包含两个不同的端点配置。一个端点绑定到"公共"套接字,使用"应用程序"安全域,并禁用管理功能。另一个端点绑定到"私有"套接字,使用"管理"安全域,并启用管理功能。
从 8.3 开始,endpoint
元素现在是一个或多个端点配置的打包程序。如果将子元素添加到
端点
,则必须使用 endpoint
元素。
如果您要从 Data Grid 8.2 或更早版本升级,并且配置多个端点,您必须将配置调整为 8.3 模式。如需更多信息,请参阅 迁移到 Data Grid 8。
安全增强
集群传输的安全域
指定包含 TLS 服务器身份来保护集群传输的安全域,例如:
<cache-container> <transport server:security-realm="tls-transport"/> </cache-container>
<cache-container>
<transport server:security-realm="tls-transport"/>
</cache-container>
此配置还加密用于跨站点复制的 RELAY 消息,并提供 JGroups SYM_ENCRYPT 和 ASYM_ENCRYPT 协议的替代选择。您必须在参与跨站点复制的所有 Data Grid 集群上配置安全性。
PEM 文件密钥存储和信任存储
直接向 Data Grid 服务器配置添加 PEM 文件,将它们用作 TLS 服务器身份中的信任存储和密钥存储。
- PEM 文件作为密钥存储必须包含 PKCS1141 或 PKCS the8 格式的私钥,以及一个或多个证书。
- PEM 文件作为信任存储必须包含一个或多个证书。
-
PEM 文件需要一个空密码
password=""
。
使用 OpenSSL 完全支持 TLSv1.3
Data Grid Server 默认支持 TLS 版本 1.2 和 1.3。您可以使用以下配置限制客户端连接到 TLSv1.3 的安全协议:
<engine enabled-protocols="TLSv1.3" />
<engine enabled-protocols="TLSv1.3" />
配置覆盖
Data Grid Server 可以使用重复 --server-config=
或 -c
参数来解析您在启动时覆盖的多个配置文件。
bin/server.sh -c infinispan.xml -c overlay.yaml
$ bin/server.sh -c infinispan.xml -c overlay.yaml
您可以根据需要使用多个配置覆盖文件,按任何顺序使用。配置覆盖文件:
- 必须为每个数据中心配置有效。
- 只要您的覆盖文件组合产生完整的配置,不需要完全配置。
Data Grid Server 不会检测覆盖文件间的冲突配置。每个覆盖文件会覆盖上述配置中的任何冲突配置。
缓存配置
如果您在覆盖文件中添加缓存配置,Data Grid 服务器不会在其他节点上动态创建该缓存。
覆盖文件不能包含缓存配置片段。例如,要在覆盖文件 -c mycache.yaml
中创建分布式缓存,您必须包含 infinispan
和 cacheContainer
字段,如下所示:
侦听所有地址
如果您将 0.0.0.0
meta-address (INADDR_ANY
)指定为 Data Grid 服务器的绑定地址,它会侦听所有可用网络接口上的进入客户端连接。
性能和可用性改进
- Data Grid Server 8.3 整合线程池以使用较少的主机资源。
-
Data Grid Server 安装现在包含
bin/service.bat
脚本,用于作为 Microsoft Windows 服务运行。
1.1.6. Data Grid 控制台 复制链接链接已复制到粘贴板!
Data Grid Console 是一个图形用户界面,用于监控和管理远程缓存,其中包括 8.3 中的以下功能和增强:
- 缓存现在必须具有适当的编码才能查看 Entries 选项卡。
您可以为缓存打开和关闭集群重新平衡操作。
重要您应该仅在短时间内禁用集群重新平衡,以避免在重启节点或添加多个节点时重复重新平衡操作。始终尽快启用集群重新平衡,以防止数据丢失。
- 添加缓存对话框中不再提供缓存 模板,除非您将自定义模板添加到 Data Grid Server 配置中。
- 自动检测 JSON 编码和 Protobuf 自定义类型。
- 缓存条目编辑现在被类型识别。
- 对警报模态、工具提示和内联帮助进行了更新,以改进用户体验。
- 改进了错误处理和统计收集。
1.1.7. Data Grid 命令行界面(CLI) 复制链接链接已复制到粘贴板!
Data Grid CLI 允许您脚本并为远程缓存自动执行管理操作。
在运行时修改配置属性
通过
change 命令,您可以在运行时修改 Data Grid 配置属性。
-
使用
--file
选项指定具有一个或多个属性修改的配置文件。 -
使用
--attribute
和--value
选项修改特定的配置属性。
alter cache mycache --attribute=clustering.remote-timeout --value=5000
alter cache mycache --attribute=clustering.remote-timeout --value=5000
控制缓存可用性
可用
命令允许您在网络分区中管理集群缓存的可用性。
-
使用
--mode=[AVAILABLE|DEGRADED_MODE]
选项,在使用 DENY_READ_WRITES 或 ALLOW_READ_WRITES 或 ALLOW_READS 分区处理策略时,将缓存可用性设置为 AVAILABLE 或 DEGRADED_MODE。
availability --mode=AVAILABLE mycache
availability --mode=AVAILABLE mycache
启用和禁用重新平衡操作
rebalance
命令可让您为缓存打开和关闭重新平衡操作。
您应该仅在短时间内禁用集群重新平衡,以避免在重启节点或添加多个节点时重复重新平衡操作。始终尽快启用集群重新平衡,以防止数据丢失。
使用
rebalance disable
命令来关闭重新平衡。[//containers/default]> rebalance disable
[//containers/default]> rebalance disable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
rebalance enable
命令打开重新平衡。[//containers/default]> rebalance enable
[//containers/default]> rebalance enable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
hot Rod 集群迁移
migrate
命令提供了将数据从一个正在运行的 Data Grid 集群迁移到另一个选项。
-
使用
migrate cluster connect
命令,从源集群建立到目标集群的连接。 -
使用
migrate cluster synchronize
命令将数据从源集群迁移到目标集群。 -
在迁移数据后,使用
migrate cluster disconnect
命令结束集群间的连接。
检索跨站点复制转发节点
site
命令可让您找出 Data Grid 集群中的哪些节点处理跨站点复制的 RELAY 消息。
-
使用
site is-relay-node
命令找出节点是否为中继节点。 -
使用
site relay-nodes
命令获取集群中中继节点的列表。
原生 CLI
在 8.3 中更新原生 CLI,以改进作为 oc
客户端插件的使用,并与 Red Hat OpenShift 上运行的 Data Grid pod 交互。
1.1.8. REST API 复制链接链接已复制到粘贴板!
Data Grid 可让您通过 REST 使用 HTTP 访问远程缓存和容器。
在运行时修改配置属性
检索缓存的所有可变缓存配置属性。
GET /rest/v2/caches/{cacheName}?action=get-mutable-attributes
GET /rest/v2/caches/{cacheName}?action=get-mutable-attributes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更改可变缓存配置属性。
POST /rest/v2/caches/{cacheName}?action=set-mutable-attributes&attribute-name={attributeName}&attribute-value={attributeValue}
POST /rest/v2/caches/{cacheName}?action=set-mutable-attributes&attribute-name={attributeName}&attribute-value={attributeValue}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
控制缓存可用性
检索缓存的可用性。
GET /v2/caches/{cacheName}?action=get-availability
GET /v2/caches/{cacheName}?action=get-availability
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在使用 DENY_READ_WRITES 或 ALLOW_READS 分区处理策略时,更改集群缓存的可用性。
POST /v2/caches/{cacheName}?action=set-availability&availability={AVAILABILITY}
POST /v2/caches/{cacheName}?action=set-availability&availability={AVAILABILITY}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
启用和禁用重新平衡操作
为所有缓存打开自动重新平衡。
POST /rest/v2/cache-managers/{cacheManagerName}?action=enable-rebalancing
POST /rest/v2/cache-managers/{cacheManagerName}?action=enable-rebalancing
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为所有缓存关闭自动重新平衡。
POST /rest/v2/cache-managers/{cacheManagerName}?action=disable-rebalancing
POST /rest/v2/cache-managers/{cacheManagerName}?action=disable-rebalancing
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为特定缓存打开自动重新平衡。
POST /v2/caches/{cacheName}?action=enable-rebalancing
POST /v2/caches/{cacheName}?action=enable-rebalancing
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为特定缓存关闭自动重新平衡。
POST /v2/caches/{cacheName}?action=disable-rebalancing
POST /v2/caches/{cacheName}?action=disable-rebalancing
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
hot Rod 迁移
REST API 会公开控制,允许您将数据从一个正在运行的 Data Grid 集群迁移到另一个网格集群。
从源集群到目标集群建立连接。
POST /v2/caches/myCache?action=connect-source
POST /v2/caches/myCache?action=connect-source
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将数据从源集群迁移到目标集群。
POST /v2/caches/myCache?action=sync-data
POST /v2/caches/myCache?action=sync-data
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在迁移数据后,在集群间终止连接。
DELETE /v2/caches/myCache/rolling-upgrade/source-connection
DELETE /v2/caches/myCache/rolling-upgrade/source-connection
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
检索跨站点复制转发节点
获取为跨站点复制发送和接收 RELAY 消息的节点列表:
GET /rest/v2/cache-managers/{cacheManagerName}
GET /rest/v2/cache-managers/{cacheManagerName}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在 XML、JSON 和 YAML 之间转换缓存配置
使用有效配置和 ?action=convert
参数调用 POST
请求。Data Grid 使用 Accept
标头指定的类型中配置的等效表示响应。
POST /rest/v2/caches?action=convert
POST /rest/v2/caches?action=convert
带有服务器事件的缓存条目和缓存配置监听程序
使用服务器事件接收与配置更改相关的事件。
GET /rest/v2/container/config?action=listen
GET /rest/v2/container/config?action=listen
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用服务器事件接收缓存事件。
GET /rest/v2/caches/{name}?action=listen
GET /rest/v2/caches/{name}?action=listen
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.9. 查询 API 复制链接链接已复制到粘贴板!
Data Grid 可让您使用 Ickle 查询语言来索引缓存并执行关系或全文本查询。
通过查询删除
您可以使用以下语法从 Data Grid 缓存中删除条目:
DELETE FROM <entityName> [WHERE condition]
DELETE FROM <entityName> [WHERE condition]
-
仅引用具有 <
entityName&
gt; 的单一实体。DELETE 查询无法使用加入。 - WHERE 条件是可选的。
查询执行方法
Query
API 提供了在缓存上执行 Ickle 查询的方法:
-
query.execute ()
运行 SELECT 语句并返回结果。 -
query.executeStatement ()
运行 DELETE 语句并修改数据。
您应该始终调用 executeStatement ()
来修改数据并调用 execute ()
来获取查询的结果。
1.1.10. 跨站点复制 复制链接链接已复制到粘贴板!
跨站点复制可让您在多个地理位置备份数据中心集群。
改进了可观察性和指标
Data Grid 8.3 更新跨站点复制功能,以提高监控和统计信息。
Data Grid 可让您:
- 通过 CLI、REST API 或 JMX 检索备份位置的详细状态。
检索备份位置的中继节点列表,以查找哪些向跨站点通信发送 JGroups RELAY 消息。
注意JGroups 配置将节点作为"站点 master"节点转发。Data Grid 使用中继节点,因为它更为描述性,并提供了更直观的选择。
Data Grid 8.3 还提供有关每个备份位置和缓存的跨站点复制操作的更多详细信息,包括响应时间和 RELAY 信息的数量。
命名全局集群
cluster
属性允许您为打印到日志消息的全局集群定义名称。这样可以更轻松地将全局集群与 Data Grid 日志中的本地集群区分开。
使用集群属性指定的全局 集群名称
在所有站点都必须相同。
默认情况下,跨站点集群名为 "xsite",但您可以指定一个自定义名称,如以下示例中的 "my-global-cluster" :
<remote-sites default-stack="tcp" cluster="my-global-cluster"> <remote-site name="LON"/> <remote-site name="NYC"/> </remote-sites>
<remote-sites default-stack="tcp" cluster="my-global-cluster">
<remote-site name="LON"/>
<remote-site name="NYC"/>
</remote-sites>
1.1.11. 滚动升级和 Hot Rod 迁移 复制链接链接已复制到粘贴板!
Data Grid 8.3 简化了在集群间执行数据实时迁移的配置和机制,以便从一个版本移到另一个版本。Data Grid 8.3 中的滚动升级:
-
不再需要手动添加
remote-store
配置来执行滚动升级。
使用 CLI 或 REST API 连接源和目标集群。 - 在 REST API 和 CLI 命令中提供额外的方法,以进行滚动升级操作。
- 可让您通过 Console、CLI、REST API 或 Hot Rod API 动态创建的缓存执行滚动升级。