在五月,我们很高兴地宣布 Aerospike 5.0 正式发布。这是一个全新的、重要的版本,大大扩展了支持全球分布式应用程序的能力。尤其值得注意的是新的多站点集群功能,集群中的节点第一次可以在地理上分布,同时保持强一致性和低延迟读取。这是一种主动-主动(active-active)架构,具有高可用性及自动冲突解决方案,并确保数据不会丢失。这种独特的功能组合将启用新的用例,例如全球可用的记录系统。

Aerospike 5.0 还对跨数据中心复制 (XDR) 进行了重大升级,提供了新选项、更高的性能和更强的配置灵活性。XDR 提供了在两个或更多 Aerospike 集群之间异步传播更新的能力,其拓扑可根据应用程序的需要进行调整。它特别擅长将在边缘集群中收集的数据推送到全球存储库,反之亦然。XDR 支持主动/主动配置,其中可能需要在应用程序中解决冲突。这是一系列 XDR 增强功能中的第一个,将在后续的 5.x 版本中推出。

企业版中提供了多站点集群和 XDR。有关 5.0 功能的完整列表,请参阅版本说明。

升级/降级注意事项

新的 XDR 实现方案包括对低级数据结构和协议的更改。尽管 Aerospike 4.9 没有公开新的 XDR 功能,但它起着桥梁版本的作用。必须遵守以下规则,以保持在 Aerospike 5 和早期服务器版本之间升级/降级的能力:

· 在集群中,所有运行低于 4.9 的版本的节点必须先升级到 4.9,然后再将任何节点升级到 5.0。

· 在集群中,所有运行 Aerospike 5.0 或更高版本的节点都必须降级到 4.9,然后再将任何节点降级到早期版本。降级到低于 4.9 的版本可能还需要删除存储设备。

多站点集群

在历史上,Aerospike 集群中的节点位于同一数据中心中,以最大程度地减少延迟。除了通过节点间的心跳来跟踪集群的运行状况之外,光纤流量(来自复制和迁移)可能是大容量的,应该越过尽可能少的开关。

从 Aerospike 4 开始,机架感知功能允许在机架之间划分集群节点,这样一个给定的机架包含数据库(主副本分区或复制副本分区)中的所有记录。通过这种安排,集群可以在机架故障中幸免,而不会丢失数据。

多站点集群允许集群节点驻留在不同的云区域或数据中心,从而进一步放松了对集群节点的约束。与机架感知一样,每个站点都应在主副本分区或复制副本分区中包含所有数据库记录。通过这种安排以及客户端机架感知规则,读取将在本地得到满足(即几毫秒)。写入延迟取决于网络拓扑,但是通常可以保持几百毫秒。对于大量读取的应用程序,这将带来两方面的好处:快速访问和区域可用性。

多站点集群遵循与普通集群相同的语义,这意味着可以使用所有数据一致性模型,包括强一致性 (SC) 模式。这启用了一类新的应用程序,例如用于全球分布的金融交易和其他记录系统。

重要的是要注意,此功能从表面上类似于在具有 XDR 的集群之间双向传送记录。区别在于 XDR 无法保证强一致性:无法避免由于对两个集群中的同一记录进行准同步写入而引起的冲突。

跨数据中心复制 (XDR)

已对 XDR 进行了全面改进,以解决现有的痛点并创建支持新功能的基线。其结果是更高的性能、更强的复原能力和增强的配置灵活性。

XDR 架构

关键的变化是,用于确定要通过 XDR 传送哪些记录的逻辑现在基于上次更新时间 (LUT)。原始实现方案改为使用摘要日志(每个记录超过 90 字节),并经常在节点之间传送这些摘要日志。这增加了开销,并且在一些极少发生的竞争条件下,本应发送的记录被跳过。

基于 LUT 的方法更准确,使用更少的带宽。至关重要的是,通过在节点之间交换最后传送时间,使用 LUT 使复制副本从主副本进行接管,而不会在传送的记录中造成漏洞或重复。

新的 XDR 架构消除了与 XDR 相关的数据传输对 Aerospike C 客户端库的依赖,从而大大提高了性能。客户端库方法重用现有代码,但以更大的开销(尤其是额外的线程和阶段)为代价,并记录对象转换以满足客户端 API。新的实现方案只需最少的转换即可将数据直接从服务器内部结构传输到客户端-服务器有线协议。

XDR 流量已重新组织,以最大程度地减少使用昂贵的锁。现在,两个节点之间的流量在同一服务线程上执行,从而导致更高的缓存使用率,其副作用是增加吞吐量和降低延迟。

新 XDR 功能

5.0 中的 XDR 在常见情况下支持许多新功能和更强大的特性:

  • 现在可以在源集群和远程集群运行时动态添加和配置远程数据中心 (DC)。
  • 现在可以从现有集群中播种远程集群,而无需使用asbackup实用程序。
  • 现在按 DC 和命名空间指定配置:
  • DC 配置可能彼此不同。
  • 给定 DC 中的不同命名空间是可独立配置的。
  • 倒带功能
  • 可以从指定的 LUT 开始重新同步 DC。
  • XDR 可以通过在传送过程中添加时间戳来修复或追赶数据中心。
  • 将新的 DC 动态添加到 XDR 时,可以将其指定为以恢复模式启动或执行初始同步。
  • DC 独立性
  • 即使 DC 节点出现故障,启用 XDR 的集群也可以保持不受影响的分区。
  • 或者,如果 DC 节点出现故障,将 XDR 配置为停止。
  • 连接目标
  • 变更通知框架已扩展为支持除 Aerospike 集群节点以外的其他目标。这是通过 XDR 配置中的“**目标连接**子句完成的。用于此目的的规范用例是支持与其他企业系统交换数据(以任一方向)的连接。
  • XDR 目标的限制已提高到 64(以前为 32)。

关于主动-主动这个词

主动-主动是一个经常引起混乱的术语,因为它指的是一系列功能,而不是单一的行为模式。Aerospike 将主动-主动系统定义为独立处理域的网络,每个域都表示同一底层数据库。此定义的直接推论是:1)在一个域中执行的写入被复制到其他域;2)每个域都可以在任何时间执行写入,而与其他域中的写入无关。

根据此定义,多站点集群和 XDR 均可以视为主动-主动系统。它们的不同之处在于其一致性模型。对于多站点集群,组成节点由分布式状态算法紧密绑定。这样就可以支持强一致性 (SC),从而保证写入将被传播而不会丢失数据(自动冲突解决方案),即使整个机架丢失(通过节点故障或网络连接断开)也将继续运行。

相比之下,使用 XDR,每个独立的处理域都是一个单独的 Aerospike 集群,并且写入是异步传播的。当两个 XDR 集群配置为互相发送写入时,如果两个写入相同的记录,则记录可能会变得不一致,而且发生的任何冲突都必须由应用程序(或手动)检测或解决。

英文原文:Aerospike Database 5: Multi-site Clustering and Cross Datacenter Replication