2.12. 网络分区和降级集群


数据网格集群可能会遇到脑裂的情况,其中集群中的节点子集相互隔离,并在节点间进行通信。当发生这种情况时,Data Grid 缓存在次版本中进入 DEGRADED 模式,而大多数分区的缓存仍然可用。

注意

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

通过控制 JVM 堆使用量以及监控并调优 GC,而不是处理网络分区,以避免 GC 暂停。默认 G1GC 适用于大多数用例,但需要根据使用模式进行调整。一个不同的 GC 实现(如 Shenandoah )可能很有用,但如果存在多个短信对象,则可能无法正常工作。有关 Shenandoah GC 的详情,请参考 Shenandoah 垃圾收集器

CAP 理论和分区处理策略

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

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

Data Grid 还可在将集群重新加入集群时进行读取。此策略是通过允许应用访问(可能过时的)数据拒绝写入条目和可用性,实现一致性的更平衡选项。

删除分区

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

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

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

Expand

PREFERRED_ALWAYS

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

PREFERRED_NON_NULL

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

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,旧的一致的哈希和新的一致的哈希都有每个键的通用所有者,从而使它们兼容,并允许 Data Grid 跳过冲突解析过程。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat