高可用机制 | 青训营笔记

75 阅读2分钟

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

系统投入正式使用的要求便是高可用和高可扩展性,HDFS在它的元数据和数据储存两部分都有相关的设计。

高可用是为了保证在一些故障情况下,仍然可以对外部提供服务。高可用并不追求100%的可用性,这也是不可能的,考虑现在都不可呢实现的一种情况,假设服务在整个地球上有无数的备份,可是如果地球爆炸了,同样不可能再提供服务,除非往外太空发展,不过也同样有这种风险。所以总而言之,所谓高可用也是一种相对的说法,目标也只是追求尽可能保证服务可用。

高可用有那么一些指标,但也可以只用一个最简单的全年可用时间。

实现高可用的方式自然是备份,这样当有节点挂了的时候只需要访问备份节点就可以了。只要有备份,那么最差的情况依然可以通过手动调整来实现,不过这会导致服务有一段相对较长的不可用时长。最好是要能够自动实现备用节点转正的功能。 以NamdeNode为例子,几个名称节点之间的同步原理是状态机复制,日志代表着修改操作,只要保障日志顺序是正确的并且是完整的,那么就能保证他们数据是一致的。

而要保证他们拥有这样的相同的日志还需要一个共识算法,至少能对外表现出强一致性,由于HDFS这些可以算作是上古时期的程序,他们用的是zookeeper这个分布式协调软件,其中的协议使用的是paxos,复杂度只能说是晦涩难懂,有兴趣更推荐理解下更好用又能好理解的raft协议。