分布式——复制

复制原理

复制是保证分布式系统高可用的基础,让一个数据存储多个副本,当某个副本所在的节点出现故障时,能够自动切换到其它副本上,从而实现故障恢复。

多个副本通常有一个为主副本,其它为备副本。主副本用来处理写请求,备副本主要用来处理读请求,实现读写分离。

主副本将同步操作日志发送给备副本,备副本通过回放操作日志获取最新修改。

分布式——复制

复制协议

主备副本之间有两种复制协议,一种是强同步复制协议,一种是异步复制协议。

1. 强同步复制协议

要求主副本将同步操作日志发给备副本之后进行等待,要求至少一个备副本返回成功后,才开始修改主副本,修改完成之后通知客户端操作成功。

优点:至少有一个备副本拥有完整的数据,出现故障时可以安全地切换到该备副本,因此一致性好。

缺点:可用性差,因为主副本需要等待,那么整个分布式系统的可用时间就会降低。

2. 异步复制协议

主副本将同步操作日志发给备副本之后不需要进行等待,直接修改主副本并通知客户端操作成功。

优点:可用性好。

缺点:一致性差。

CAP

分布式存储系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容忍性(P:Partition tolerance),最多只能同时满足其中两项。

在设计分布式系统时,需要根据实际需求弱化某一要求。因此就有了下图中的三种设计:CA、CP 和 AP。

需要注意的是,分区容忍性必不可少,因为需要总是假设网络是不可靠的,并且系统需要能够自动容错,因此实际上设计分布式存储系统需要在一致性和可用性之间做权衡。上一节介绍的强同步协议和异步复制协议就是在一致性和可用性做权衡得到的结果。

分布式——复制

BASE

BASE 是 Basically Available(基本可用)、Soft State(软状态)和 Eventually Consistent(最终一致性)三个短语的缩写。BASE 理论是对 CAP 中一致性和可用性权衡的结果,是基于 CAP 定理逐步演化而来的。BASE 理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。

分布式——复制

1. 基本可用

指分布式系统在出现故障的时候,保证核心可用,允许损失部分可用性。

例如,电商在做促销时,服务层可能只提供降级服务,部分用户可能会被引导到降级页面上。

2. 软状态

指允许系统存在中间状态,而该中间状态不会影响系统整体可用性,即不同节点的数据副本之间进行同步的过程允许存在延时。

3. 最终一致性

一致性模型包含以下三种:

  • 强一致性:新数据写入之后,在任何数据副本上都能读取到最新值;
  • 弱一致性:新数据写入之后,不能保证在数据副本上能读取到最新值;
  • 最终一致性:新数据写入之后,只能保证过了一个时间窗口后才能在数据副本上读取到最新值;

强一致性通常运用在需要满足 ACID 的传统数据库系统上,而最终一致性通常运用在大型分布式系统中。应该注意的是,上面介绍的强同步复制协议和异步复制协议都不能保证强一致性,因为它们是分布式系统的复制协议。这两种复制协议如果要满足最终一致性,还需要多加一些控制。

在实际的分布式场景中,不同业务单元和组件对一致性的要求是不同的,因此 ACID 和 BASE 往往会结合在一起使用。

更多内容请关注每日编程,每天进步一点。


分享到:


相關文章: