第 2 章 Data Grid 发行信息
了解新功能,获取最新的数据网格发行信息。
2.1. Data Grid 8.2.0 的新功能 复制链接链接已复制到粘贴板!
Data Grid 8.2 提高了可用性、提高性能并提高安全性。了解.
2.1.1. Data Grid Server 复制链接链接已复制到粘贴板!
Data Grid Server 为 Java 虚拟机(JVM)提供灵活、持久且高度可扩展的数据存储。
默认授权
现在,Data Grid Server 配置允许授权根据一组默认角色和权限限制用户访问权限。
例如,用户需要分配 admin 角色,以便对 Data Grid 集群执行管理操作。当没有足够权限的用户试图操作服务器资源时,会记录以下信息:
The user is not allowed to access the server resource: ISPN000287: Unauthorized access: subject 'Subject with principal(s): [myusername]' lacks 'ADMIN' permission
The user is not allowed to access the server resource: ISPN000287: Unauthorized access: subject 'Subject with principal(s): [myusername]' lacks 'ADMIN' permission
以下显示了启用了授权的默认 Data Grid Server 配置:
- 1
- 为服务器管理和管理启用授权。您可以删除
authorization元素以允许不受限制的访问。
此配置不会影响缓存配置。您必须为缓存单独启用授权。
用于提高安全性的凭证存储
为了保护敏感文本字符串,如密码,您现在可以将它们添加到凭据密钥存储中,而不是直接在 Data Grid Server 配置中。
使用 credentials 命令和 Data Grid CLI 进行设置。
审计日志记录
审计日志可让您跟踪对 Data Grid 集群的更改,以便您了解何时发生变化以及哪些用户进行更改。
使用 org.infinispan.AUDIT 日志记录类别启用审计日志记录并配置如何记录配置事件和管理操作。
端点 IP 过滤
现在,您可以为 Data Grid Server 端点配置 IP 地址过滤规则来接受或拒绝连接,如下例所示:
使用带有 Data Grid CLI 的 server connector ipfilter 命令来检查和修改 IP 过滤规则。
用于客户端证书验证的信任存储
现在,如果要在服务器和客户端间执行 mutual SSL/TLS 证书验证,则数据网格 服务器 现在可让您将客户端信任存储添加到服务器识别配置中。
安全域身份缓存
现在,Data Grid 服务器会缓存安全域的身份以提高性能。
您可以使用 cache-max-size 和 cache-lifespan 属性为安全域配置身份缓存,如下例所示,其中显示了默认值:
<security-realm name=" cache-max-size="256"
cache-lifespan="-1">
...
</security-realm>
<security-realm name=" cache-max-size="256"
cache-lifespan="-1">
...
</security-realm>
单端口端点的隐式连接器
在使用单一端口进行端点时,您不再需要在 Data Grid Server 配置中定义 Hot Rod 和 REST 连接器。
例如,从 Data Grid 8.2 开始,以下 端点配置 隐式使用默认的 Hot Rod 和 REST 连接器:
<endpoints socket-binding="default" security-realm="default"/>
<endpoints socket-binding="default" security-realm="default"/>
相反,以下 端点配置 明确包括 Hot Rod 和 REST 连接器:
<endpoints socket-binding="default" security-realm="default">
<hotrod-connector name="hotrod"/>
<rest-connector name="rest"/>
</endpoints>
<endpoints socket-binding="default" security-realm="default">
<hotrod-connector name="hotrod"/>
<rest-connector name="rest"/>
</endpoints>
指标端点与之前的版本一致
为了在版本间兼容,Data Grid 服务器现在导出 Data Grid 7.3 及更高版本提供的所有指标。
2.1.2. Data Grid 控制台 复制链接链接已复制到粘贴板!
Data Grid 控制台提供了一个图形用户界面来监控和维护远程数据网格集群。
用户体验改进
在 Data Grid 8.2 中,控制台提供多个用户体验和可用性。
- 现在,如果没有用户已存在,系统会提示您从欢迎页面中创建用户。
- 所有文本字符串都已检查并编辑,使其与 PatternFly UX 编写指南 保持一致。
- 出于清晰起见,在表单或标签和描述中更新了上下文帮助。
基于角色的访问控制
Data Grid 控制台应用安全授权配置,并根据分配的角色和权限限制用户访问。
计数器管理
Data Grid 控制台改进了本发行版本中计数器的管理,允许您删除和过滤计数器。
2.1.3. Data Grid 命令行界面 复制链接链接已复制到粘贴板!
Data Grid 命令行界面(CLI)可让您在远程 Data Grid 集群上执行管理操作。
备份和恢复 Data Grid 集群
CLI 提供了一个 backup 命令,可以创建包含缓存的条目、缓存配置、Protobuf 模式和服务器脚本的数据网格资源存档。然后,您可以在重启或迁移后从备份存档中恢复 Data Grid 集群。
性能测试工具
基准 命令可让您使用 CLI 对缓存运行性能测试。
分配用户角色和权限
CLI 使用 roles 子命令来扩展 user 命令,允许您查看、授予和拒绝用户角色。现在,您可以动态更新用户角色分配,以控制授权设置并限制对 Data Grid 集群和缓存的访问。
跨站点复制操作
在本发行版本中,CLI 允许您使用 site 命令执行额外的跨站点复制操作。
站点名称 返回本地站点的名称。
站点视图 返回可相互备份的所有站点的名称列表。
站点 state-transfer-mode 配置跨站点状态转移,手动或自动进行。
凭证密钥存储管理
CLI 包含一个 credentials 命令,用于管理 Data Grid Server 的凭据密钥存储。
原生 CLI
Data Grid 8.2 添加了原生 CLI,您可以在 Linux、macOS 或 Windows 上运行,并用作 oc 客户端插件。
- 从红帽客户门户下载 Data Grid Software Downloads,下载原生 CLI。
-
为安装说明和示例用法,打开发布中包含的
README。
原生 CLI 目前作为技术预览提供。
2.1.4. 跨站点复制 复制链接链接已复制到粘贴板!
跨站点复制允许您在多个地理区域备份数据网格集群。
自动状态传输操作
当问题发生和备份位置离线时,您必须使用 CLI 或 JMX 或 REST 手动执行跨站点状态传输操作。
但是,在使用异步备份策略时,Data Grid 现在可在解决冲突后自动执行跨站点状态传输操作。当它检测到备份位置已恢复在线并且网络连接稳定时,Data Grid 会在备份位置之间启动双向状态传输。例如,Data Grid 同时将状态从 LON 传输到 NYC 和 NYC 到 LON。
只有异步备份策略才能进行自动状态传输。
SPI 用于自定义冲突解析
Data Grid 提供了一个 SPI,可让您为异步 Active/Active 备份配置自定义冲突解析。
XSiteMergePolicy 枚举为冲突分辨率提供以下选项:
DEFAULT- 使用默认算法处理并发写入冲突。
PREFER_NON_NULL- 如果发生写入/删除冲突,这个算法会保留写操作并丢弃删除操作。默认算法适用于所有其他冲突。
PREFER_NULL- 如果发生写入/删除冲突,这个算法会保留删除操作并丢弃写操作。默认算法适用于所有其他冲突。
ALWAYS_REMOVE- 从两个站点中删除冲突的条目。
您可以使用 merge-policy 属性指定冲突解析策略,包括自定义实现,例如:
<distributed-cache name="eu-customers">
<backups merge-policy="org.mycompany.MyCustomXSiteEntryMergePolicy">
<backup site="LON" strategy="ASYNC"/>
</backups>
</distributed-cache>
<distributed-cache name="eu-customers">
<backups merge-policy="org.mycompany.MyCustomXSiteEntryMergePolicy">
<backup site="LON" strategy="ASYNC"/>
</backups>
</distributed-cache>
能够从 CLI 和 REST 验证跨站点视图
现在,您可以通过 CLI 或 REST API 验证跨站点视图。
对于 CLI,调用 site view 命令,以检索相互备份的所有站点的名称列表。
在 REST API 中,调用以下 GET 请求:
GET /rest/v2/cache-managers/{cacheManagerName}
GET /rest/v2/cache-managers/{cacheManagerName}
Data Grid 使用 JSON 格式的备份位置列表响应,如下所示:
"sites_view": [
"LON",
"NYC"
]
"sites_view": [
"LON",
"NYC"
]
2.1.5. 热 Rod 客户端 复制链接链接已复制到粘贴板!
热 Rod 是一种自定义二进制 TCP 协议,可为客户端应用提供不同编程语言的高性能数据访问。
如果您将 Java 8 与 Hot Rod 客户端搭配使用,则必须至少升级到 Java 8u252,以避免 Data Grid 8.2 的严重 SSLHandshakeException 错误。如需更多信息,请参阅 已知问题。
改进了接近缓存性能
Data Grid Server 现在包含 bloom 过滤器,通过减少无效消息总数来优化写操作的性能。
使用 nearCacheUseBloomFilter ()' 方法为近缓存启用 bloom 过滤器。
新的 Hot Rod 客户端配置属性
从 Data Grid 8.2 开始,Hot Rod 客户端配置 API 提供了以下配置属性:
-
Infinispan.client.hotrod.transport_factory指定要使用的传输工厂。默认为org.infinispan.client.hotrod.impl.transport.netty.DefaultTransportFactory。 -
Infinispan.client.hotrod.cache.<cache_name>.marshaller指定基于每个缓存使用的 marshaller。 -
Infinispan.client.hotrod.ssl_ciphers列出了使用空格和首选顺序分隔的密码,这些密码在 SSL 握手期间用来协商密钥保护的加密算法。 -
Infinispan.client.hotrod.ssl_provider指定创建 SSL 引擎时要使用的安全供应商,默认为 OpenSSL。 -
Infinispan.client.hotrod.cache.<cache_name>.transaction.transaction_manager_lookup指定每个缓存要使用的TransactionManagerLookup。
有些属性(如 infinispan.client.hotrod.trust_store_path )现已弃用。详情请查看红帽知识库中的 弃用和删除 文章。
2.1.6. 查询 API 复制链接链接已复制到粘贴板!
借助 Data Grid Query API,您可以在 Ickle 查询语言中使用关系或全文本查询来索引缓存和搜索值。
Data Grid 8.2 为您提供了一个显著改进的查询实现,它基于 Hibernate Search 6,它提供了对 Apache Lucene 8 索引功能的支持。此发行版本提供以下查询改进:
- 更快的索引速度。
- 索引、非索引和混合查询的统计信息。
- 强大的类型索引配置,用于替换字符串键/值属性。
有关索引和查询的完整文档,请参阅 在缓存中查询值。
查看迁移详情,了解如何调整 Data Grid 8.2 的查询配置。
如需更多信息,请参阅 Data Grid 迁移指南。
2.1.7. REST API 复制链接链接已复制到粘贴板!
借助 Data Grid REST API,您可以通过 HTTP 与远程集群和缓存交互。
流键和条目
Data Grid REST API 现在允许您以 JSON 格式检索缓存中的所有密钥或条目。按如下方式调用 GET 请求:
流键
GET /rest/v2/caches/{cacheName}?action=keys
GET /rest/v2/caches/{cacheName}?action=keys
流条目
GET /rest/v2/caches/{cacheName}?action=entries
GET /rest/v2/caches/{cacheName}?action=entries
使用访问控制列表缓存
Data Grid 8.2 包括了一个访问控制列表(ACL)缓存,用于存储用户角色映射。您可以通过 REST API 与 ACL 缓存交互。
查看用户 ACL 信息
GET /rest/v2/security/user/acl
GET /rest/v2/security/user/acl
刷新 ACL 缓存
POST /rest/v2/security/cache?action=flush
POST /rest/v2/security/cache?action=flush
检索查询和索引统计信息
使用 GET 请求,获取缓存中查询和索引的信息。
GET /v2/caches/{cacheName}/search/stats
GET /v2/caches/{cacheName}/search/stats
缓存配置
Data Grid REST API 现在在检索缓存配置时提供改进的响应,以便更轻松地将远程集群中的缓存配置与本地项目中的缓存配置进行比较和验证。
如果缓存配置包含已弃用的属性,Data Grid 会自动转换它们以与当前架构兼容。
为确保您的缓存配置易于比较,应用程序应始终使用最新的模式。
2.1.8. Data Grid marshalling 复制链接链接已复制到粘贴板!
除了其他 marshaller 实现外,Data Grid 还包括 ProtoStream API,允许您通过网络和持久存储传输自定义 Java 对象。
ProtoStream
Data Grid 8.2 将 ProtoStream API 升级到 4.4.1.Final。
对 Data Grid 8.2 中的 ProtoStream API 的更改会影响从以前的 Data Grid 8 版本升级。
如需更多信息,请参阅 Data Grid 8 升级备注
deserialization allow list
红帽承诺使用包含的语言,术语"white list"已更改为"允许列表",用于配置 Java 类的序列化。
Data Grid 8.1
Data Grid 8.2
创建 SerializationContextInitializer 实现
Data Grid 现在提供了一个 @AutoProtoSchemaBuilder 注释,它生成一个扩展 SerializationContextInitializer 的类或接口的实施。这在将自定义 Java 对象存储在 Data Grid 缓存中时,提供了更有效且可靠的机制来创建 Protobuf 模式和 marshallers。
在以前的 Data Grid 版本中,您使用 MessageMarshaller API 和 ProtoSchemaBuilder 注解来创建 Protobuf 模式。您应该迁移到 @AutoProtoSchemaBuilder 注释,并改为使用该注释。
@ProtoAdaptor for marshalling of external 类
Data Grid 添加了对 @ProtoAdaptor 注释的支持,您可以为任何外部的第三方 Java 对象类添加适应器类。
直接使用集合和数组作为值
从 Data Grid 8.2 开始,您可以使用类型为 ArrayList,LinkedList,HashSet,LinkedHashSet,TreeSet 的值,以及带有 ProtoStream API 的简单类型数组,如 String[] 或 int[]。
在以前的 Data Grid 版本中,在没有额外的映射程序的情况下,无法直接使用集合和数组作为值。任何 put (… <ArrayList>) 调用会导致以下异常:
IllegalArgumentException: No marshaller registered for Java type java.util.ArrayList
IllegalArgumentException: No marshaller registered for Java type java.util.ArrayList
Kyro 和 Protostuff marshallers 弃用
Kyro 和 Protostuf marshallers 现已弃用。如需了解更多详细信息,请参阅红帽知识库中的 弃用和删除 文章。
2.1.9. Data Grid 配置 复制链接链接已复制到粘贴板!
Data Grid 为缓存提供基于模式的配置选项,以及自定义底层机制,如安全性和集群传输。
Authorization: 用户角色和权限
Data Grid 8.2 改进了基于角色的访问控制(RBAC)功能,可保护对 Data Grid 安装的访问以及缓存。
要为 Cache Manager 访问启用授权,将 authorization 元素添加到 cache-container 中,如下例所示:
<cache-container name="default" statistics="true">
<security>
<authorization/>
</security>
</cache-container>
<cache-container name="default" statistics="true">
<security>
<authorization/>
</security>
</cache-container>
要为缓存启用授权,请按如下所示添加 authorization 元素:
<distributed-cache name="myCache" mode="SYNC">
<security>
<authorization/>
</security>
</distributed-cache>
<distributed-cache name="myCache" mode="SYNC">
<security>
<authorization/>
</security>
</distributed-cache>
集群角色映射器
Data Grid 8.2 引入了 ClusterRoleMapper,这是 Data Grid 用来将安全主体与授权角色关联的默认机制。
此角色映射器使用持久复制缓存来动态存储默认角色和权限的 principal-to-role 映射。
| 角色 | 权限 | 描述 |
|---|---|---|
|
| ALL | 具有所有权限的超级用户,包括控制缓存管理器生命周期。 |
|
| ALL_READ、ALL_WRITE、LISTEN、EXEC、MONITOR、CREATE |
除了 |
|
| ALL_READ, ALL_WRITE, LISTEN, EXEC, MONITOR |
除 |
|
| ALL_READ, MONITOR |
除了监控权限外,还具有对 Data Grid |
|
| MONITOR |
可以通过 JMX 和 |
新权限
CREATE 权限可让用户创建和删除容器资源,如缓存、计数器、模式和脚本。
CREATE 权限取代了 ___schema_manager 和 ___script_manager 角色,用户需要向 Data Grid 服务器添加和删除模式和脚本。
MONITOR 权限允许访问 JMX 统计数据和 指标端点。
有关授权的更多信息,请参阅 安全指南中的 以下内容:
数据网格缓存配置片段
从 Data Grid 8.2 开始,您不再需要在缓存配置中包含 infinispan 和 cache-container 元素。
要创建缓存,您只需要提供 *-cache 元素。
例如,要创建一个使用同步模式的分布式缓存,您可以使用以下配置:
<distributed-cache name="myCache" mode="SYNC" />
<distributed-cache name="myCache" mode="SYNC" />
要创建使用 Protobuf 编码的复制缓存,您可以使用以下配置:
<replicated-cache name="books"> <encoding media-type="application/x-protostream"/> </replicated-cache>
<replicated-cache name="books">
<encoding media-type="application/x-protostream"/>
</replicated-cache>
JGroups INSERT_BEFORE 属性
现在,您可以使用 INSERT_BEFORE 值使用 stack.combine inheritance 属性自定义 JGroups 集群传输,例如:
- 1
- 在 JGroups 堆栈中的
pbcast.NAKACK2之前插入ASYM_ENCRYPT协议。
Data Grid 8.2 模式还包括 INSERT_ABOVE 和 INSERT_BELOW 属性。
INSERT_ABOVE 与 INSERT_AFTER 相同。INSERT_BELOW 与 INSERT_BEFORE 相同。
JGroups 默认堆栈
Data Grid 8.2 更改默认 JGroups 堆栈中针对 UNICAST3 和 NAKACK2 协议重新传输请求的配置。
在某些情况下,比如在较长的 Garbage Collection (GC) pause 时,节点无法处理集群中的其他节点的 JGroups 消息。当这些节点再次可用时,它们请求发送节点以使用 XMIT 请求重新传输 JGroups 消息。
要提高性能并避免因为重新传输请求失败的集群传输问题,请应用以下更改:
-
xmit_interval属性的值从 100 毫秒增加到 200 毫秒。 -
max_xmit_req_size属性现在为每个重新传输请求设置最多 500 个消息,而不是最多使用 TCP 的 UDP 或 64000 的 8500 个消息。
缓存健康状况
Data Grid 包括一个新的 FAILED 状态。从这个版本开始,缓存的可用健康状况如下:
| 健康状态 | 描述 |
|---|---|
|
| 表示缓存按预期运行。 |
|
| 表示缓存处于重新平衡状态,但如预期运行。 |
|
| 表示缓存无法按预期工作,可能需要进行故障排除。 |
|
| 在 8.2 中添加,以指示缓存无法在提供的配置中启动。 |
基于 JDBC 字符串的缓存存储
基于 JDBC 字符串的缓存存储现在除了用于存储缓存条目的数据表外,还创建一个 _META 表。_META 表保存元数据,以确保任何现有数据库内容与当前数据网格版本和配置兼容。
2.1.10. Spring 应用程序 复制链接链接已复制到粘贴板!
Data Grid 提供 Spring Cache 和 Spring Session 实现。
从 Data Grid 8.2 开始,您的 Spring 应用程序可以使用 ProtoStream marshaller 将 Java 对象编码并解码为协议缓冲(Protobuf)格式。
如需更多信息,请参阅 Spring Boot Starter