1.7. 站点间的客户端连接


客户端可以在 Active/Passive 或 Active/Active 配置中写入 Data Grid 集群。

Active/Passive

下图演示了,Data Grid 只处理来自一个站点的客户端请求:

在前面的镜像中:

  1. 客户端连接到 LON 的 Data Grid 集群。
  2. 客户端将 "k1" 写入缓存。
  3. LON "n1" 的中继节点将"k1""发送到位于 NYC, "nA" 的中继节点。

使用主动/被动时,NYC 提供数据冗余。如果 LON 的 Data Grid 集群因为某种原因离线,客户端就可以开始向 NYC 发送请求。当您重新上线 LON 时,您可以将数据与 NYC 同步,然后将客户端切回到 LON

Active/Active

下图演示了 Active/Active,其中 Data Grid 在两个站点处理客户端请求:

在前面的镜像中:

  1. 客户端 A 连接到 LON 的 Data Grid 集群。
  2. 客户端 A 将 "k1" 写入缓存。
  3. 客户端 B 连接到位于 NYC 的 Data Grid 集群。
  4. 客户端 B 将 "k2" 写入缓存。
  5. LONNYC 转发节点发送请求,使 "k1" 复制到 NYC,"k2" 复制到 LON

使用 Active/Active 时 NYCLON 将数据复制到远程缓存,同时处理客户端请求。如果 NYCLON 离线,客户端就可以开始向在线站点发送请求。然后,您可以使离线站点重新在线、推送状态以同步数据,并根据需要切换客户端。

备份策略和客户端连接

重要

建议在 Active/Active 配置中使用异步备份策略(policy=async)。

如果多个客户端尝试同时写入同一条目,并且备份策略是同步的(strategy=sync),则会出现死锁。但是,如果两个站点都访问不同的数据集,则可以使用带有 Active/Passive 配置的同步备份策略,在这种情况下,并发写入的死锁不会有风险。

1.7.1. 并发写入和冲突条目

如果客户端同时写入同一条目,但在不同站点上写入同一条目,则 Active/Active 站点配置可能会发生冲突条目。

例如,当客户端 B 写入 NYC 中的 "k1" 时,客户端 A 会同时写入 "k1" in LON。在这种情况下,"k1" 在 LON 中具有不同的值,而不是在 NYC 中。发生复制后,不能保证存在 "k1" 的哪个值。

为确保数据一致性,Data Grid 使用向量时钟算法在备份操作过程中检测冲突条目,如下例所示:

            LON       NYC

k1=(n/a)    0,0       0,0

k1=2        1,0  -->  1,0   k1=2

k1=3        1,1  <--  1,1   k1=3

k1=5        2,1       1,2   k1=8

                 -->  2,1 (conflict)
(conflict)  1,2  <--

向量时钟是每次写入条目时递增的时间戳元数据。在上例中,0 代表 "k1" 上向量时钟的初始值。

客户端将"k1=2"放在 LON 中,向量时钟为 1,0,其数据仓库将其复制到 NYC。然后,客户端会将"k1=3"放在 NYC 中,将向量时钟更新放在 1,1,后者的数据仓库复制到 LON

但是,如果客户端同时将 "k1=5" 放置到 LON 中,客户端会在 NYC 中放置 "k1=8",因为"k1" 的向量值在 LONNYC 之间不严格或更小。

当找到冲突条目时,Data Grid 使用 Java compareTo (String anotherString) 方法来比较站点名称。要确定哪个键具有优先权,Data Grid 选择比另一个键小的站点名称。名为 AAA 的站点的密钥优先于名为 AAB 的站点的密钥,以此类推。

遵循同一示例,为了解决 "k1" 的冲突,Data Grid 使用来自 LON 的 "k1" 的值。这会在 Data Grid 解决冲突并复制值后,在 LONNYC 中产生 "k1=5"。

提示

使用数字作为简单方法添加站点名称,以表示解决冲突条目的优先级顺序;例如,1LON2NYC

备份策略

Data Grid 仅使用异步备份策略(strategy=async)执行冲突解析。

您不应该将同步备份策略与 Active/Active 配置一起使用。在这个配置并发写入中,会导致死锁并丢失数据。但是,如果两个站点都访问不同的数据集,则可以使用带有 Active/Active 配置的同步备份策略,在这种情况下,并发写入的死锁不会有风险。

跨站点合并策略

除了将 Data Grid 配置为执行以下操作的跨站点合并策略外,数据中心还提供 XSiteEntryMergePolicy SPI:

  • 始终删除冲突条目。
  • 在进行 write/remove 冲突时应用写入操作。
  • 当发生 write/remove 冲突时删除条目。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.