searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

从高可用到数据一致性

2023-12-12 03:36:38
18
0

根据百度百科词条定义,高可用性(HA,High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。可用性(也称有效性)的量化参数为可用度, 表示系统在规定的条件下使用时,在某时刻具有或维持其功能的概率。可用度(也称有效度) 通常记作A,可用平均无故障时间(MTBF)和平均修复时间(MTTR)来计算:A = MTBF/(MTBF + MTTR)。

  • MTBF(Mean Time Between Failure):指系统在两次故障之间的平均时间。
  • MTTR(Mean Time To Repair):指系统从故障发生到故障修复完成所需的平均时间。

在实际业务中,一般采用SLA(Service Level Agreement)来描述系统的高可用等级,也就是常说的“几个9”的可用性,通常用周期内系统不可用的时间来衡量:

系统可用性

宕机时间/年

宕机时间/月

宕机时间/周

宕机时间/天

90% (1个9)

36.5 天

72 小时

16.8 小时

2.4 小时

99% (2个9)

3.65 天

7.20 小时

1.68 小时

14.4 分

99.9% (3个9)

8.76 小时

43.8 分

10.1 分钟

1.44 分

99.99% (4个9)

52.56 分

4.38 分

1.01 分钟

8.66 秒

99.999% (5个9)

5.26 分

25.9 秒

6.05 秒

0.87 秒

从前面的概念可以看到,描述高可用性不是空泛地指系统永远在线,而是可量化的处置时长,包含故障发现、故障处理和故障恢复,一般需要做如下几点设计:

  1. 冗余:系统需要一个或多个冗余以消除单点故障,包括数据冗余、软件冗余和硬件冗余。
  2. 检测:需要能发现系统出现问题,以进行故障处置。
  3. 接管:冗余节点需要能接管故障节点,以恢复系统功能。

冗余最大的难点是对节点数据复制和数据一致性的保障,在系统性能(吞吐量、响应时长)和数据完整(RPO)间取得平衡:

  • 如果数据镜像到冗余节点是同步的,那么冗余节点数量和物理环境将影响性能表现。
  • 如果数据镜像到冗余节点是异步的,那么故障接管就会出现数据差异的情况。

可以用数据一致性模型来描述冗余的效果,主要有三种类型:

  • 弱一致性:写入一个新值后,在冗余节点可能读得出来,也可能读不出来。
  • 最终一致性:写入一个新值后,在冗余节点可能读不出来,但在某个时间窗口后,最终保证可以读出来。
  • 强一致性:写入一个新值后,在任意冗余节点都能读取出来。

从实现上看,弱一致性和最终一致性是异步冗余的,强一致性一般是同步冗余的。异步通常代表更好的性能,但数据接管需要更复杂的状态控制;同步的接管相对简单,但冗余的流程协调却更复杂。

[图片来源:Transaction Across DataCenter]

数据冗余在技术上表现为跨数据中心事务的处理,常见的解决方案如上图所示,包括数据迁移(Backups)、数据复制(M/S、M/M)和分布式事务(2PC、Paxos)三种类型。其中数据迁移中的Backups(备份)是离线方案,不具备高可用恢复(Failover)的特性,简单介绍其他方案:

  • M/S:主备(Master-Slave)结构,Master单点写入,Slave可以承担一定读请求。通常由Slave周期性地拉取Master数据在本地重放,因此是最终一致性,较难实现为强一致性,除非向分布式事务方案进化。
  • M/M:多主(Master-Master/Multi-Master)结构,系统中存在两个或多个Master,每个Master都提供读写服务。通常是Master之间互为M/S进行数据异步同步,与M/S方案一样是最终一致性模式。难点在于处理多点写入的数据冲突,通常有数据分片冲突避免和数据版本冲突合并的解决方式。
  • 2PC:分布式事务中的两阶段提交(Two Phase Commit)协议,引入协调者组件实现跨多节点事务的ACID特性,在数据冗余方面表现为同步复制过程和数据强一致性。强调所有节点同时成功或失败,网络稳定性(如Timeout)和节点数量会增加阻塞和失败回退概率,可以通过增加更轻量的问询阶段进行优化,如3PC和TCC,但也增加更多网络交互和业务侵入,各有优劣,不是完全替换关系。
  • Paxos:一种民主选举模式的一致性算法,分为Prepare和Accept两个阶段,通过递增的提案号(Sequence Number)在大多数成员间达成有序的共识,并传播给整个集群,因此节点数量要求是单数,吞吐量比2PC协议高。

分布式领域有著名的CAP理论:在一个分布式系统中,Consistency(一致性)、Availability(可用性)和Partition Tolerance(分区容错性)三者不能同时成立。这种基于权衡的设计指导思想,从图中没有一种各项全绿的方案,也足以管中窥豹。

0条评论
0 / 1000
陈一之
20文章数
1粉丝数
陈一之
20 文章 | 1 粉丝
原创

从高可用到数据一致性

2023-12-12 03:36:38
18
0

根据百度百科词条定义,高可用性(HA,High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。可用性(也称有效性)的量化参数为可用度, 表示系统在规定的条件下使用时,在某时刻具有或维持其功能的概率。可用度(也称有效度) 通常记作A,可用平均无故障时间(MTBF)和平均修复时间(MTTR)来计算:A = MTBF/(MTBF + MTTR)。

  • MTBF(Mean Time Between Failure):指系统在两次故障之间的平均时间。
  • MTTR(Mean Time To Repair):指系统从故障发生到故障修复完成所需的平均时间。

在实际业务中,一般采用SLA(Service Level Agreement)来描述系统的高可用等级,也就是常说的“几个9”的可用性,通常用周期内系统不可用的时间来衡量:

系统可用性

宕机时间/年

宕机时间/月

宕机时间/周

宕机时间/天

90% (1个9)

36.5 天

72 小时

16.8 小时

2.4 小时

99% (2个9)

3.65 天

7.20 小时

1.68 小时

14.4 分

99.9% (3个9)

8.76 小时

43.8 分

10.1 分钟

1.44 分

99.99% (4个9)

52.56 分

4.38 分

1.01 分钟

8.66 秒

99.999% (5个9)

5.26 分

25.9 秒

6.05 秒

0.87 秒

从前面的概念可以看到,描述高可用性不是空泛地指系统永远在线,而是可量化的处置时长,包含故障发现、故障处理和故障恢复,一般需要做如下几点设计:

  1. 冗余:系统需要一个或多个冗余以消除单点故障,包括数据冗余、软件冗余和硬件冗余。
  2. 检测:需要能发现系统出现问题,以进行故障处置。
  3. 接管:冗余节点需要能接管故障节点,以恢复系统功能。

冗余最大的难点是对节点数据复制和数据一致性的保障,在系统性能(吞吐量、响应时长)和数据完整(RPO)间取得平衡:

  • 如果数据镜像到冗余节点是同步的,那么冗余节点数量和物理环境将影响性能表现。
  • 如果数据镜像到冗余节点是异步的,那么故障接管就会出现数据差异的情况。

可以用数据一致性模型来描述冗余的效果,主要有三种类型:

  • 弱一致性:写入一个新值后,在冗余节点可能读得出来,也可能读不出来。
  • 最终一致性:写入一个新值后,在冗余节点可能读不出来,但在某个时间窗口后,最终保证可以读出来。
  • 强一致性:写入一个新值后,在任意冗余节点都能读取出来。

从实现上看,弱一致性和最终一致性是异步冗余的,强一致性一般是同步冗余的。异步通常代表更好的性能,但数据接管需要更复杂的状态控制;同步的接管相对简单,但冗余的流程协调却更复杂。

[图片来源:Transaction Across DataCenter]

数据冗余在技术上表现为跨数据中心事务的处理,常见的解决方案如上图所示,包括数据迁移(Backups)、数据复制(M/S、M/M)和分布式事务(2PC、Paxos)三种类型。其中数据迁移中的Backups(备份)是离线方案,不具备高可用恢复(Failover)的特性,简单介绍其他方案:

  • M/S:主备(Master-Slave)结构,Master单点写入,Slave可以承担一定读请求。通常由Slave周期性地拉取Master数据在本地重放,因此是最终一致性,较难实现为强一致性,除非向分布式事务方案进化。
  • M/M:多主(Master-Master/Multi-Master)结构,系统中存在两个或多个Master,每个Master都提供读写服务。通常是Master之间互为M/S进行数据异步同步,与M/S方案一样是最终一致性模式。难点在于处理多点写入的数据冲突,通常有数据分片冲突避免和数据版本冲突合并的解决方式。
  • 2PC:分布式事务中的两阶段提交(Two Phase Commit)协议,引入协调者组件实现跨多节点事务的ACID特性,在数据冗余方面表现为同步复制过程和数据强一致性。强调所有节点同时成功或失败,网络稳定性(如Timeout)和节点数量会增加阻塞和失败回退概率,可以通过增加更轻量的问询阶段进行优化,如3PC和TCC,但也增加更多网络交互和业务侵入,各有优劣,不是完全替换关系。
  • Paxos:一种民主选举模式的一致性算法,分为Prepare和Accept两个阶段,通过递增的提案号(Sequence Number)在大多数成员间达成有序的共识,并传播给整个集群,因此节点数量要求是单数,吞吐量比2PC协议高。

分布式领域有著名的CAP理论:在一个分布式系统中,Consistency(一致性)、Availability(可用性)和Partition Tolerance(分区容错性)三者不能同时成立。这种基于权衡的设计指导思想,从图中没有一种各项全绿的方案,也足以管中窥豹。

文章来自个人专栏
学而时习
20 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0