赞
踩
为什么分布式系统需要Paxos、Raft这样的共识协议?为了回答这个问题,需要首先理解:什么是分布式系统?或者,它与集中式系统的区别在什么地方?
一个关键区别在于:分布式系统中,任何一个组件发生故障后,整个系统还能继续工作。
手机和个人电脑是集中式系统,CPU、内存芯片、硬盘,任何一个发生故障,整个电脑就停机不能工作了。
服务器是集中式系统,如果服务器上配置了多块硬盘和RAID卡,那么其中任何一块硬盘故障,整个服务器还可以继续工作。但是CPU、内存条,或者RAID卡故障了,就不能继续工作了。
磁盘阵列也是集中式系统,它有两个控制器,每个控制器有自己独立的内存条和CPU,有很多块硬盘构成RAID组,还有多个电源。磁盘阵列的内存条、CPU、控制器主板、硬盘、电源故障之后,都还可以继续工作。但是磁盘阵列的背板是不可更换的,背板故障了,磁盘阵列就不能继续工作了。
对于集中系统来说,允许发生故障的部件,一般会设计成不停机可更换的,也就是FRU(Field Replaceable Unit)。一旦这些FRU故障了,可以使用新的备件在不停机的情况下就换掉。
无论分布式系统,还是集中式系统,都需要“核心”来对一些关键问题做决策。例如,某个硬盘是否已经故障了?如果这个“核心”做出了某个硬盘已经故障的判断,所有其他部件都会认可这个判断,并采取一致的故障切换动作。如果这个判断不是由一个核心来给出的,而是由多个部件同时做出自己的判断,就会出现判断结果不一致的问题,整个系统的运行就会发生混乱。
对于一个系统来说,最关键的问题是:哪个部件是这个“核心”?
在集中式系统中,总有一些部件是不可更换的,并且假设他们是不可能发生故障的,例如磁盘阵列的背板。这样就可以在这些“不可能发生故障”的部件参与下选定一个“核心”,然后再由这个核心来对后续关键问题做出判断。
但是在分布式系统中,任何部件都可能发生故障,这样就需要多个不可靠部件共同参与下,选出一个“核心”,并由这个核心来对后续关键问题作出判断。
Paxos和Raft解决的主要问题,就是如何在多个不可靠部件共同参与下,选出核心的问题,也就是这些不可靠部件如何达成共识的问题。
作者简介
黄岩,云和恩墨分布式存储软件总架构师,十余年存储研发经验,在NAS和备份领域有深入钻研,曾担任某NAS产品性能SE,负责产品性能调优工作,该产品在2011年打破了SPESsfs性能测试世界纪录。
「墨读时刻」特别节目黄岩人物专访即将上线,听一位存储老兵讲述摸爬滚打的这些年和对未来自研存储的洞察,敬请期待... ...
数据驱动,成就未来,云和恩墨,不负所托!
云和恩墨创立于2011年,以“数据驱动,成就未来”为使命,是智能的数据技术提供商。我们致力于将数据技术带给每个行业、每个组织、每个人,构建数据驱动的智能未来。
云和恩墨在数据承载(分布式存储、数据持续保护)、管理(数据库基础软件、数据库云管平台、数据技术服务)、加工(应用开发质量管控、数据模型管控、数字化转型咨询)和应用(数据服务化管理平台、数据智能分析处理、隐私计算)等领域为各个组织提供可信赖的产品、服务和解决方案,围绕用户需求,持续为客户创造价值,激发数据潜能,为成就未来敏捷高效的数字世界而不懈努力。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。