HDFS 高可用和高扩展机制分析| 青训营笔记

108 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第8天

系统的可用性(Avaiability)指的就是,我们的系统可以正常服务的时间占比。无论是因为软硬件故障,还是需要对系统进行停机升级,都会让我们损失系统的可用性。可用性通常是用一个百分比的数字来表示,比如99.99%。我们说,系统每个月的可用性要保障在99.99%,也就是意味着一个月里,你的服务宕机的时间不能超过4.32分钟。 在分布式存储系统中,让系统中多个实例的状态保持一致,是一个比较难处理的问题。尤其是当系统出现故障时,系统能否始终保持一致性,很大程度上影响了系统的可用性和数据的可靠性。

典型的由不一致导致的重大事故是这样的:正常情况下,系统通过某种数据同步机制保持各实例上状态的一致性,当发生实例宕机、网络分区等故障时,这种同步机制无法正常工作,一致性被打破。

这种情况下,出现了多份不一致的状态数据,系统很难自动去判断到底哪份状态数据才是“正确的”,也就没有办法自动恢复。更糟糕的是,一旦这种不一致的状态被其它系统读取,错误的状态将被传递到其它系统中,造成不可预期的结果。这种复杂的数据错误,即使人工处理也是非常难恢复,往往恢复时间需要几小时或几天,严重情况下甚至于无法恢复。

可以看出,在故障情况下仍然保持一致性,是系统能快速从故障中恢复的前提条件,有助于提升系统的可用性。但为了保证一致性,在数据更新时,往往需要协调参与的各个模块,确保它们同步更新。比如,使用各种分布式事务。但这会导致这些模块在可用性上紧密耦合在一起,反而降低了系统的可用性。这种场景下,可用性和一致性又存在矛盾。