2.12. 网络分区和降级的集群


Data Grid 集群可能会遇到脑裂情况,其中集群中的节点子集相互隔离,节点之间的通信也会被取消加入。当发生这种情况时,在次要分区中的 Data Grid 缓存进入 DEGRADED 模式,同时大多数分区中的缓存仍然可用。

注意

垃圾回收(GC)暂停是网络分区的最常见原因。当 GC 暂停节点时,Data Grid 集群可以在脑裂网络中启动操作。

通过使用 OpenJDK 的 Shenandoah 实现,而不是处理网络分区,而是尝试通过控制 JVM 堆使用情况来避免 GC 暂停。

CAP theorem 和分区处理策略

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

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

数据中心还可以允许读取,同时将集群重新连接在一起。此策略是通过允许应用程序访问(潜在的)数据来拒绝对条目和可用性的写入来实现一致性选项。

删除分区

作为加入集群并返回到正常操作过程的一部分,Data Grid 会根据合并策略解析冲突条目。

默认情况下,Data Grid 不会尝试解决合并冲突,这意味着集群很快返回到健康状态,且除正常的集群重新平衡外,性能不会牺牲。然而,在这种情况下,缓存中的数据更有可能不一致。

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

Expand

PREFERRED_ALWAYS

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

PREFERRED_NON_NULL

Data Grid 应用集群中找到的第一个非空值,该值可以从日期值中恢复。

REMOVE_ALL

Data Grid 会删除任何具有冲突值的条目。

2.12.1. 垃圾回收和分区处理

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

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

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

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

当节点具有旧的但兼容且一致的哈希时,Data Grid 会忽略过时的集群拓扑,且不会尝试解决冲突。例如,如果因为垃圾回收(GC)造成集群中的一个节点被暂停,集群中的其他节点会从一致的哈希值中删除,并将其替换为新的所有者节点。如果 numOwners > 1,旧的一致的哈希和新的一致的哈希为每个键都有一个通用所有者,从而使它们兼容,并允许数据仓库跳过冲突解析过程。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat