Red Hat Data Grid 8.2 发行注记
获取 Data Grid 8.2 的发行信息
摘要
Red Hat Data Grid 复制链接链接已复制到粘贴板!
Data Grid 是一个高性能分布式内存数据存储。
- 无架构数据结构
- 将不同对象存储为键值对的灵活性。
- 基于网格的数据存储
- 旨在在集群中分发和复制数据。
- 弹性扩展
- 动态调整节点数量,以便在不中断服务的情况下满足需求。
- 数据互操作性
- 从不同端点在网格中存储、检索和查询数据。
Data Grid 文档 复制链接链接已复制到粘贴板!
红帽客户门户网站中提供了 Data Grid 的文档。
Data Grid 下载 复制链接链接已复制到粘贴板!
访问红帽客户门户上的 Data Grid 软件下载。
您必须有一个红帽帐户才能访问和下载数据中心软件。
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息。
第 1 章 升级到最新的 Data Grid 版本 复制链接链接已复制到粘贴板!
红帽建议尽快将任何部署从 8.2.x 升级到最新的 Data Grid 8 版本。Data Grid 团队定期修补安全漏洞,并主动修复软件的最新版本的问题。
第 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
2.2. Data Grid 8.2.1 中的新功能 复制链接链接已复制到粘贴板!
了解 Data Grid 8.2.1 中的新功能。
2.2.1. Data Grid Server 复制链接链接已复制到粘贴板!
此发行版本包括对 Data Grid Server 的几个改进。
数据源连接
现在,通过数据网格服务器,可以更轻松地检测和管理与数据源的无效连接,如 JDBC 缓存存储。
background-validation 和 validate-on-acquisition 属性包含在连接池属性中。Data Grid 命令行界面(CLI)包含 服务器数据源 命令,可让您列出和测试数据源连接。
如需更多信息,请参阅:
LDAP 身份递归搜索
search-recursive="true" 参数现在可用于 LDAP 域,以允许递归搜索。如需更多信息,请参阅 LDAP 域。
TLSv1.3 支持
默认情况下,Data Grid 服务器支持 TLS 版本 1.2 和 1.3。
如果要只允许 TLS 1.3,您可以配置 Data Grid 服务器使用的 TLS 版本。如需更多信息,请参阅配置 TLS 版本和密码套件。
2.2.2. Data Grid 控制台 复制链接链接已复制到粘贴板!
Data Grid Console 不再显示缓存的 Entries 选项卡,或者允许您为不配置任何编码的缓存创建条目。
如果要通过控制台创建或修改条目,则数据网格建议使用 application/x-protostream 介质类型配置缓存编码。如需更多信息,请参阅 缓存编码和 Marshalling。
2.2.3. 热 Rod Node.JS 客户端 复制链接链接已复制到粘贴板!
除了 PLAIN,Hot Rod Node.JS 客户端现在支持 DIGEST-MD5 和 SCRAM 身份验证机制。
了解如何配置不同的 SASL 身份验证机制,并获取 Hot Rod Node.JS 客户端指南中的使用 示例。
2.2.4. 文档 复制链接链接已复制到粘贴板!
这个版本中的显著文档改进和修订:
- 更新了添加 Java 密钥存储和信任存储以保护 Data Grid 服务器指南中的远程客户端连接的步骤,网址为: 加密数据网格服务器连接
- 添加了关于在以下文档中为 JMX 管理启用远程端口的信息:将 JMX 嵌入 Data Grid: 启用 JMX Remote Ports AssumeRole - Data Grid Server: 启用 JMX Remote Ports
2.3. Data Grid 8.2.2 中的新功能 复制链接链接已复制到粘贴板!
了解 Data Grid 8.2.2 中的新功能。
2.3.1. CVE-2021-44228 的安全补丁 复制链接链接已复制到粘贴板!
Data Grid 8.2.2 修复 CVE-2021-44228,它是 Apache Log4j 日志记录库中的一个安全漏洞。Data Grid 包括受影响的 log4j-core 库,作为 Data Grid Server 分发的一部分,以及 Red Hat OpenShift 部署的 Data Grid Server 镜像。
红帽建议尽快升级到 8.2.2。如果您无法升级,红帽建议您按照步骤来缓解 RHSB-2021-009 Log4Shell - Remote Code Execution security bulletin 中的安全漏洞。
红帽还建议您:
-
检查项目中作为嵌入式库包含 Hot Rod 客户端或 Data Grid 的任何
log4j依赖项版本。 -
检查任何 Red Hat JBoss EAP 部署,以确保您不受此漏洞的影响,即使 EAP 的 Data Grid Modules 不包括受影响的
log4j依赖项。
有关此漏洞对 Data Grid 的影响的更多信息,请参阅红帽知识库中的 Red Hat Data Grid 7.x/8.x 会受到 CVE-2021-44228 或 CVE-2021-4104 的影响。
2.3.2. 最大闲置过期 复制链接链接已复制到粘贴板!
Data Grid 发送 touch 命令,它们协调集群中最大闲置、最大空闲的 max-idle、过期时间的超时值。您可以使用过期配置中的 touch 属性,将 Data Grid 配置为同步或异步发送触动命令。如需更多信息,请参阅 Data Grid 配置架构参考。
2.3.3. 跨站点复制 复制链接链接已复制到粘贴板!
提高了处理离线站点的性能
从 8.2.2 开始,Data Grid 使用单个线程在备份位置离线时处理事件。
带有异步冲突解析的 tombstone 泄漏
Data Grid 8.2.2 解决了使用异步备份策略进行跨站点复制导致 tombstone 泄漏的问题。tombstones 是删除远程站点存储的对象,作为解决并发写入冲突的机制的一部分。
2.4. Data Grid 8.2.3 中的新功能 复制链接链接已复制到粘贴板!
了解 Data Grid 8.2.3 中的新功能。
2.4.1. Apache Log4j 库中安全漏洞的安全补丁 复制链接链接已复制到粘贴板!
Data Grid 8.2.3 修复了 Apache Log4j 日志库中以下常见漏洞和风险(CVE):
- CVE-2021-44832 Remote code execution via JDBC Appender,数据源引用 JNDI URI
- Log4j 2.x 中的 CVE-2021-45046 Denial of Service (DoS),带有线程上下文消息模式和上下文查找模式
- Log4j 2.x 中的 CVE-2021-45105 Denial of Service (DoS),带有线程上下文映射(MDC)输入数据包含递归查找和上下文查找模式
Data Grid 包括受影响的 Log4j 库,作为 Data Grid 服务器分发的一部分,以及 Red Hat OpenShift 部署的 Data Grid Server 镜像的一部分。
红帽建议尽快升级到 8.2.3。如果您无法升级,红帽建议您按照上面提到的 Log4j 漏洞的安全公告页面中包含的缓解方案步骤。
红帽还建议您:
-
检查项目中作为嵌入式库包含 Hot Rod 客户端或 Data Grid 的任何
log4j依赖项版本。 -
检查任何 Red Hat JBoss EAP 部署,以确保您不受此漏洞的影响,即使 EAP 的 Data Grid Modules 不包括受影响的
log4j依赖项。
2.5. Data Grid 8.2 中支持的 Java 版本 复制链接链接已复制到粘贴板!
根据您安装 Data Grid 的方式,红帽支持不同的 Java 版本。
嵌入式缓存
在自定义应用程序中对嵌入式缓存使用 Data Grid 时,红帽支持 Java 8 和 Java 11。
远程缓存
红帽支持仅对 Data Grid Server 安装支持 Java 11。对于 Hot Rod Java 客户端,红帽支持 Java 8 和 Java 11。
Java 8 弃用
从 Data Grid 8.2 开始,对 Java 8 的支持已弃用,目前计划在 Data Grid 8.4 中删除。
在自定义应用程序中具有内嵌缓存的用户应该计划在支持可用时升级到 Java 11 或 Java 17。
在需要 Java 8 的应用程序中运行的热 Rod Java 客户端可以继续使用旧版本的客户端库。红帽支持将较旧的 Hot Rod Java 客户端版本与最新的数据网格服务器版本相结合。
第 3 章 已知问题和修复问题 复制链接链接已复制到粘贴板!
了解 Data Grid 中已知的问题,并找出哪些问题已被解决。
3.1. Data Grid 的已知问题 复制链接链接已复制到粘贴板!
对于影响 Red Hat OpenShift 上运行的 Data Grid 集群的问题,您应该参考 Data Grid Operator 8.2 发行注记。
Red Hat JBoss EAP (EAP)的数据网格模块缺少依赖项
问题: JDG-5104
描述 : EAP 7.4 的 Data Grid 模块不包括所有必需的 Hibernate 工件。此外,EAP 7.4 删除了 Data Grid 所需的 Eclipse MicroProfile 和 SmallRye 模块。
临时解决方案: 请执行以下操作:
- 下载 Data Grid Server 发行版。
-
打开终端窗口并导航到
$RHDG_HOME/server/lib目录。 找到以下 Hibernate JAR 文件:
-
hibernate-search-backend-lucene-6.0.2.Final-redhat-00002.jar -
hibernate-commons-annotations-5.0.5.Final-redhat-00002.jar
-
将 JAR 文件复制到 Data Grid 模块安装的以下目录中:
modules/system/add-ons/rhdg/org/infinispan/rhdg-8.2/
modules/system/add-ons/rhdg/org/infinispan/rhdg-8.2/Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
打开
/modules/system/add-ons/rhdg/org/infinispan/rhdg-8.2/module.xml进行编辑。 在以下模块中添加
optional="true"属性:<module name="org.eclipse.microprofile.config.api" export="true" optional="true"/> <module name="org.eclipse.microprofile.metrics.api" export="true" optional="true"/> <module name="io.smallrye.config" services="export" export="true" optional="true"/> <module name="io.smallrye.metrics" services="import" export="true" optional="true"/>
<module name="org.eclipse.microprofile.config.api" export="true" optional="true"/> <module name="org.eclipse.microprofile.metrics.api" export="true" optional="true"/> <module name="io.smallrye.config" services="export" export="true" optional="true"/> <module name="io.smallrye.metrics" services="import" export="true" optional="true"/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
当 putAll () 操作写入具有 optimistic locking 的过期条目时,会出现死锁
问题: JDG-5087
Description: 使用 optimistic locking 的事务缓存,删除过期条目的命令,即使写入操作触发了过期条目。在某些情况下,当将 All () 操作写入过期条目时,此行为可能会导致死锁。
临时解决方案: 这个问题还没有临时解决方案。
当处理带有 putAll () 或 getAll () 操作的过期条目时,数据竞争发生
问题: JDG-5028
描述 : 当 putAll () 或 getAll () 操作会影响两个或多个条目时,这两个条目都可以过期。如果这两个条目的密钥都映射到同一 HashMap 存储桶,则其中一个更新可能会丢失,Data Grid 会抛出以下异常:
IllegalStateException: Entry should be always wrapped!
IllegalStateException: Entry should be always wrapped!
临时解决方案: 这个问题还没有临时解决方案。
客户端无法连接到使用 TLS/SSL 加密的远程缓存
问题: JDG-4763
描述 : 客户端无法连接到远程缓存,Data Grid 日志会显示与 TLS/SSL 相关的 WARN 日志消息。
此问题源自于 Data Grid 中包含的 WildFly OpenSSL 库。有关日志消息的完整详情,请参阅以下红帽知识库文章: 客户端在升级到 RHDG 8.2.1 后无法连接服务器。
临时解决方案: 启动带有以下属性的 Data Grid 服务器以使用 Java TLS/SSL 库而不是 OpenSSL:
-Dorg.infinispan.openssl=false
-Dorg.infinispan.openssl=false
Red Hat JBoss Web Server 到 Data Grid 8.2 的会话外部化提供了 7.3.8 或 8.1.1 版本的 Tomcat 会话客户端
问题: JDG-4599
描述 : Data Grid 8.2 还没有包含 Tomcat 会话客户端,该客户端将在 EAP 7.4 GA 后可用。
临时解决方案: 使用 Data Grid Server 8.2 和带有以下配置的 Tomcat 会话客户端的 Data Grid 7.3.8 或 8.1.1 版本:
使用 Java 8 的热 Rod 客户端需要升级以避免 SSLHandshakeException
问题: JDG-4279
描述 : 如果您的 Java 版本不是 8u252,则使用带有 Hot Rod 客户端的 JDK 8 会产生以下致命异常:
SSLHandshakeException: Remote host closed connection during handshake at sun.security.ssl.SSLSocketImpl
SSLHandshakeException: Remote host closed connection during handshake at sun.security.ssl.SSLSocketImpl
临时解决方案: 确保您至少使用 Java 8u252。这个版本包括应用程序协议协商(ALPN)所需的安全功能。
数据网格解析性能
问题: JDG-3636
描述 : 在一些测试案例中,Data Grid 分区处理功能所需的时间比预期要长于执行冲突解析。
临时解决方案: 这个问题还没有临时解决方案。
Data Grid Does Not Passivate JWS Sessionsectly
问题: JDG-2796
描述 : 当从 JBoss Web 服务器(JWS)外部会话时,如果使用 FINE 持久性策略,会话无法正确传递。
临时解决方案: 这个问题还没有临时解决方案。
3.2. 修复了 Data Grid 8.2.0 中 复制链接链接已复制到粘贴板!
Data Grid 8.2.0 包括以下显著的修复:
- 使用事务缓存执行滚动升级时,JDG-4315 IllegalArgumentException。
- 当索引缓存包含非索引的 Protobuf 实体时,JDG-3972 Inconsistent query 行为。
- JDG-4520 DB2TableManager 在表存在检查期间查看所有模式。
- JDG-4425 JGroups 重新传输请求太频繁且太大。
- 在 将带有 jboss-marshalling 的自定义对象放在 EAP 嵌入式模块上时,会发生 JDG-4420 ClassNotFoundException。
- 启用统计的 JDG-4387 Simple 缓存会导致 EvictionManagerImpl 中的 NullPointerException。
- JDG-4375 如何禁用 TLS 1.1 并仅启用 TLS 1.2。
- JDG-4370 Make AWS 依赖项在 EAP 模块中是可选的。
- JDG-4351 的性能可能会发生低,并可能会因为在 IdentityIntMap#clear ()中的大型阵列调用 Arrays.fill (keys, null)而面临事务超时。
- 当我们放置了大值大小的条目时,JDG-4344 隔离 HotRod 客户端的内存泄漏。
- JDG-4339 Conflict 解析在事务缓存中失败。
- 在 事务缓存上执行 Rolling 升级时,JDG-4315 IllegalArgumentException。
- JDG-4281 Infinispan operator CR 不接受日志级别的更改。
- 在删除"expose"配置时,JDG-4152 Infinispan CR 不幂等。
3.3. 修复了 Data Grid 8.2.1 中 复制链接链接已复制到粘贴板!
Data Grid 8.2.1 包括以下显著的修复:
- JDG-4678 从 8.1 升级到 Data Grid 8.2,如果将数据缓存到单文件缓存存储,则数据被破坏。
- JDG-4713 全局状态不兼容。
- 当通过 CacheContainer.getCache (String cacheName)检索缓存时,JDG-4649 Thread contention。
- 当使用 JSON 数据类型查询缓存时,JDG-4590 UnsupportedOperationException。
- JDG-4563 Implicit 缓存锁定发行版本失败。
- JDG-4438 Concurrent 修改在 pessimistic 缓存中成功。
- JDG-4414 删除两个 pod 中的一个,然后缩减为一个看似破坏集群状态的情况。
- JDG-3970 Throttle TLS 握手失败 NotSslRecordException WARN 消息。
3.4. 修复了 Data Grid 8.2.2 中 复制链接链接已复制到粘贴板!
Data Grid 8.2.2 包括以下显著的修复:
3.5. 修复了 Data Grid 8.2.3 中 复制链接链接已复制到粘贴板!
Data Grid 8.2.3 包括以下显著的修复:
3.6. 主机系统和依赖项问题 复制链接链接已复制到粘贴板!
在某些情况下,Data Grid 部署可能会遇到主机系统或外部依赖项导致的错误。本节详细介绍了任何已知问题以及故障排除和临时解决方案。
Red Hat Enterprise Linux 7 上的 TLS
RHEL 7 提供了 OpenSSL 库的版本,它还没有提供对 TLSv1.3 的支持。但是,Data Grid Server 8.2 默认启用 TLSv1.3 和 TLSv1.2,这会导致加密 Hot Rod 和 REST 端点的客户端连接出现错误。
Data Grid Server 还记录类似以下的信息:
WARN [org.infinispan.HOTROD] ISPN004098: Closing connection due to transport error org.infinispan.client.hotrod.exceptions.TransportException:: ISPN004077: Closing channel due to error in unknown operation.
WARN [org.infinispan.HOTROD] ISPN004098: Closing connection due to transport error
org.infinispan.client.hotrod.exceptions.TransportException:: ISPN004077:
Closing channel due to error in unknown operation.
如果您在 RHEL 7 上安装 Data Grid 服务器,您应该使用以下 JVM 选项禁用 OpenSSL 来使用原生 Java SSL 库:
-Dorg.infinispan.openssl=false
-Dorg.infinispan.openssl=false
第 4 章 技术预览 复制链接链接已复制到粘贴板!
Data Grid 版本提供技术预览功能。了解有关红帽对这些功能的支持的更多信息。
4.1. 技术预览功能 复制链接链接已复制到粘贴板!
红帽产品服务级别协议(SLA)不支持技术预览功能或功能,且可能无法正常工作。
红帽不推荐在生产环境中使用技术预览功能或功能。这些功能为您提供对即将推出的产品功能的早期访问,这些功能允许您在开发过程中测试并提供反馈。
如需更多信息,请参阅红帽技术预览功能支持范围。