2.12. 网络分区和降级集群


数据网格集群可能会遇到脑裂情形,因为集群中的节点子集相互隔离,并且节点之间的通信变得不连接。当发生这种情况时,在次要分区中的数据网格缓存进入 DEGRADED 模式,而大多数分区中的缓存仍可用。

注意

垃圾回收(GC)暂停是网络分区的最常见原因。当 GC 暂停导致节点变得不响应时,Data Grid 集群可以在脑裂网络中开始操作。

除了处理网络分区外,尝试通过控制 JVM 堆使用以及使用现代的低暂停 GC 实现(如 Shenandoah)来避免 GC 暂停。

CAP theorem 和 partition 处理策略

CAP theorem 代表分布式、键/值数据存储的限制,如 Data Grid。发生网络分区事件时,您必须在一致性或可用性之间进行选择,而数据网格修复分区并解决任何冲突的条目。

可用性
允许读写操作。
一致性
拒绝读写操作。

数据网格还可允许在将集群重新加入时进行读取。通过允许应用程序访问(潜在的过时)数据来拒绝对条目的写入和可用性,此策略具有更均衡的选择。

删除分区

作为将集群重新投入到正常操作的一部分,Data Grid 会根据合并策略来解析冲突条目。

默认情况下,数据网格不会尝试解决合并冲突,这意味着集群可以更早地返回健康状态,且在正常集群重新平衡之外没有性能损失。然而,在这种情况下,缓存中的数据会更有可能不一致。

如果您配置合并策略,则数据网格需要更长的时间来修复分区。配置合并策略会导致数据网格从每个缓存中检索条目的每个版本,然后解决以下冲突:

Expand

PREFERRED_ALWAYS

Data Grid 找到集群中大多数节点上存在的值,并应用它,这可以恢复过期的值。

PREFERRED_NON_NULL

数据网格应用集群中发现的第一个非null 值,可恢复日期值。

REMOVE_ALL

数据网格删除所有具有冲突值的条目。

2.12.1. 垃圾回收和分区处理

长垃圾回收(GC)时间可以增加 Data Grid 检测网络分区所需的时间。在某些情况下,GC 可能会导致数据网格超过检测分割的最大时间。

另外,当在分割后合并分区时,Data Grid 会尝试确认集群中存在所有节点。因为没有超时或上限应用到节点的响应时间,所以把集群视图合并的操作可能会延迟。这可能导致网络问题以及 GC 时间。

GC 在通过分区处理影响性能的另一个场景是当 GC 暂停 JVM 时,导致一个或多个节点离开集群。当发生这种情况且在 GC 完成后挂起的节点时,节点可能会过期或有冲突的集群拓扑。

如果配置了合并策略,Data Grid 会在合并节点前尝试解决冲突。但是,只有在节点有不兼容的哈希值时,才会使用合并策略。如果每个片段至少有一个通用所有者,则两个一致的哈希是兼容的,如果它们至少有一个通用所有者,则不兼容。

当节点有旧但兼容的哈希时,Data Grid 会忽略过期的集群拓扑,且不会尝试解决冲突。例如,如果一个节点因为垃圾回收而暂停,集群中的其他节点也将其从一致的哈希中移除,并将它替换为新的所有者节点。如果 numOwners > 1,旧的一致的哈希值以及新的一致的哈希值为每个键都有通用所有者,这使得数据网格能够兼容,并允许数据网格跳过冲突解析过程。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部