《从 0 开始学架构》学习归整(一)复杂度问题的来源 高可用篇

内容纲要

高可用

系统无中断的执行其功能的能力,代表其可用性程度,是系统设计准则之一。
系统高可用方案本质上都是通过冗余来实现的。
高性能增加机器目的在与扩展其处理能力;高可用增加机器目的在于冗余处理单元。

计算高可用

无论在哪台机器上进行计算,同样的算法和输入数据,产出的结果都是一样的

计算高可用面临的复杂度与高性能篇中的集群复杂度相似,其难点相比高性能架构来说是要求更复杂的分配算法(1 主多备,2主多备、全主 0 备等)。

存储高可用

将数据从一台机器搬到另一台机器,需要经过路线传输(在某个时间段一定存在数据不一致问题)

银行系统中的数据不一致 ↓

银行

储存高可用的难点不在于备份数据,在于减少和规避数据不一致带来的问题。

高可用状态决策

计算高可用、存储高可用的基础都是状态决策,即系统需要判断当前的状态是正还是异常,如果出现异常就需要采取行动来保证服务的可用性

通过冗余来实现高可用系统,状态决策本质上就不可能做到完全正确

决策方式

  1. 独裁
    • 结构:由 1 个决策者(独立决策主体)+ 多个上报者(冗余个体)
    • 优点:不会出现决策混乱
    • 缺点:只有一个决策者,当决策者故障,整个系统将失去决策能力
  2. 协商
    • 结构:两个独立个体通过交流信息,根据规则进行决策(最常见的结构是:主备结构)
    • 优点:当一个决策者出现故障时,另一个可以继续为可用性提供支撑
    • 缺点:两种在信息交换时的稳定性不能完全保证,可能出现信息不对称,会导致出现两主或者无主等情况(增加连接,如双连接、三连接等方式,可以一定程度上降低风险)
  3. 民主
    • 结构:多个个体通过投票选举出决策者
    • 优点:增加更多的个体使高可用能够扛住更大的考验
    • 缺点:统一因为信息交换问题,会出现脑裂问题,即出现多个决策者(强制要求票数必须超过半数才能当选决策者可以规避出现多个决策者,但在大部分个体故障的情况下,服务无法选举出决策者,使服务失去决策能力)

目前无论采取什么方案,都无法彻底解决高可用带来的问题

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注