知识卡片
数据分区架构的产生背景:硬件故障级高可用应付不了地理级灾难
内容
前面讨论的主备、主从、主主、[[数据集中集群:规模扩大带来的三重复杂性,及ZooKeeper的应对]]和[[数据分散集群:数据分配算法的三设计点,及执行角色的两种实现路径]]这些高可用存储架构,共同的设计前提都是”部分硬件可能损坏”这个场景——考虑的是单机、单个节点这个粒度的故障。但对于像新奥尔良水灾、美加大停电、洛杉矶大地震这类极端灾害或事故,可能会导致整个城市甚至整个地区的基础设施全部瘫痪,这种情况下受影响的不再是”部分硬件”,而是”所有硬件”,前面那套基于硬件故障设计的高可用架构在这种量级的灾难面前完全失效——因为不管你在同一个机房里做了多少层冗余,只要这个机房所在的整个地区都断电断网了,冗余再多份也没有意义。这正是数据分区架构诞生的背景:既然故障的粒度已经从”单机/单个节点”上升到了”整个地理区域”,高可用设计也必须相应地把粒度提升到地理级别——把数据按一定规则分区,让不同分区分布在不同的地理位置,每个分区只存一部分数据。这样设计的核心价值在于:即使某个地区真的发生了严重的自然灾害或事故,受影响的也只是落在那个地区的那一部分数据,而不是全部数据都不可用;等故障恢复后,其他地区备份下来的数据还能帮助故障地区快速把业务恢复起来。
参考来源
- 位置:《从零开始学架构》第26讲《高可用存储架构:集群和分区》"数据分区"(源文件:_epub-src/OEBPS/text00002.html)
- 结论依据:原文说明"前面我们讨论的存储高可用架构都是基于硬件故障的场景去考虑和设计的……但对于一些影响非常大的灾难或者事故来说,有可能所有的硬件全部故障……这种情况下基于硬件故障而设计的高可用架构不再适用,我们需要基于地理级别的故障来设计高可用架构,这就是数据分区架构产生的背景",并说明"即使某个地区发生严重的自然灾害或者事故,受影响的也只是一部分数据,而不是全部数据都不可用",直接支撑本卡片结论。
- 原始内容:前面我们讨论的存储高可用架构都是基于硬件故障的场景去考虑和设计的……这种情况下基于硬件故障而设计的高可用架构不再适用,我们需要基于地理级别的故障来设计高可用架构,这就是数据分区架构产生的背景。