分布式数据库分布在多个区域使用地理复制将数据从一个区域传输到另一个区域。此类系统使用仲裁共识来确保容错。读取和写入也应该是有序的。异地复制增强了数据系统的高可用性,因为如果一个区域发生故障,其他区域可用于处理请求。

法定人数

Quorum Graphic上图中,P代表主节点,S1、S2、S3为次节点。 P、S1、S2、S3组合在一起代表一个副本单元。每个副本单元都是容错的;即,一个节点发生故障不会影响可用性。如果主节点出现故障,剩余的辅助节点之一将被选举为下一个主节点。在这样的配置中,当客户端向主节点发送写请求W1时,主节点除了将数据持久保存在其存储中之外,还将向所有辅助节点发送数据。仅当副本单元中的大多数节点已确认写入时,主节点才会向客户端确认。

读取可以从任何节点发生,而不仅仅是主节点。上述配置中,副本单元对一个节点故障是容错的;即,当大多数(例如,四分之三)节点具有写入时,就达到了法定人数。滞后节点或故障节点可以通过从健康节点复制所有数据来恢复。当两个节点发生故障时,就无法达到法定人数,因为没有多数。

异地复制和全局仲裁

异地复制和全局仲裁图形

在异地复制中,除了给定的主要区域具有写入操作之外,请求还会复制到所有其他次要区域。这有助于区域故障时的高可用性。例如,如果美国东部出现故障,那么美国西部可以通过成为新的主要区域来满足请求。此操作称为故障转移,可以自动或手动完成。在这种情况下,仅当大多数其他次要区域已经看到写入请求时,主要区域才能确认写入请求。这与副本单元内的本地仲裁中发生的情况类似。

异地复制类型

当客户端向主区域发出写入请求时,它会通过特殊的辅助数据区域 (XS) 复制到其他辅助数据区域。例如,从剩余的辅助副本中选择一个辅助副本来执行此复制。 XS 节点将等待大多数区域的确认,然后才能提交到其存储。

大致有两种类型的异地复制策略,如下所述:

同步异地复制

在这种情况下,写入区域的主节点会等待来自 XS 的确认,即使它已经满足其本地仲裁。例如,仅当本地和全局法定人数同时存在时,它才会向客户端发送确认。

异步异地复制

在这种情况下,写入区域的主节点不会等待来自 XS 的确认。例如,当存在本地仲裁时,它可以向客户端发送确认。

正如我们所见,通过同步异地复制,数据永远不会丢失。例如,大多数节点和区域都会有数据。但在异步复制中,如果只有一个区域知道数据,则可能会出现区域中断导致数据丢失。然而,异步复制系统比同步复制系统更快,因为确认等待时间更短。商业数据库在两种方法之间找到了平衡。

结论

本文简要概述了仲裁、全局仲裁和两种异地复制类型。支持异地复制的数据库通过手动或自动故障转移功能提供高可用性。当数据在地理上分布时,它们提供良好的可扩展性。这些架构可确保在发生区域灾难或大规模中断时业务连续性和快速灾难恢复。

Comments are closed.