当前位置:   article > 正文

​丝析发解丨为什么分布式系统需要Paxos、Raft这样的共识协议?

​丝析发解丨为什么分布式系统需要Paxos、Raft这样的共识协议?

8ba612537abc6a1a7cae8733a8a7658e.png

为什么分布式系统需要Paxos、Raft这样的共识协议?为了回答这个问题,需要首先理解:什么是分布式系统?或者,它与集中式系统的区别在什么地方? 

一个关键区别在于:分布式系统中,任何一个组件发生故障后,整个系统还能继续工作。 

手机和个人电脑是集中式系统,CPU、内存芯片、硬盘,任何一个发生故障,整个电脑就停机不能工作了。

服务器是集中式系统,如果服务器上配置了多块硬盘和RAID卡,那么其中任何一块硬盘故障,整个服务器还可以继续工作。但是CPU、内存条,或者RAID卡故障了,就不能继续工作了。

磁盘阵列也是集中式系统,它有两个控制器,每个控制器有自己独立的内存条和CPU,有很多块硬盘构成RAID组,还有多个电源。磁盘阵列的内存条、CPU、控制器主板、硬盘、电源故障之后,都还可以继续工作。但是磁盘阵列的背板是不可更换的,背板故障了,磁盘阵列就不能继续工作了。

对于集中系统来说,允许发生故障的部件,一般会设计成不停机可更换的,也就是FRU(Field Replaceable Unit)。一旦这些FRU故障了,可以使用新的备件在不停机的情况下就换掉。

无论分布式系统,还是集中式系统,都需要“核心”来对一些关键问题做决策。例如,某个硬盘是否已经故障了?如果这个“核心”做出了某个硬盘已经故障的判断,所有其他部件都会认可这个判断,并采取一致的故障切换动作。如果这个判断不是由一个核心来给出的,而是由多个部件同时做出自己的判断,就会出现判断结果不一致的问题,整个系统的运行就会发生混乱。

对于一个系统来说,最关键的问题是:哪个部件是这个“核心”?

在集中式系统中,总有一些部件是不可更换的,并且假设他们是不可能发生故障的,例如磁盘阵列的背板。这样就可以在这些“不可能发生故障”的部件参与下选定一个“核心”,然后再由这个核心来对后续关键问题做出判断。

但是在分布式系统中,任何部件都可能发生故障,这样就需要多个不可靠部件共同参与下,选出一个“核心”,并由这个核心来对后续关键问题作出判断。

Paxos和Raft解决的主要问题,就是如何在多个不可靠部件共同参与下,选出核心的问题,也就是这些不可靠部件如何达成共识的问题。

bb8390013bd70adb7ea53db406867f29.png

作者简介

黄岩,云和恩墨分布式存储软件总架构师,十余年存储研发经验,在NAS和备份领域有深入钻研,曾担任某NAS产品性能SE,负责产品性能调优工作,该产品在2011年打破了SPESsfs性能测试世界纪录。

「墨读时刻」特别节目黄岩人物专访即将上线,听一位存储老兵讲述摸爬滚打的这些年和对未来自研存储的洞察,敬请期待... ...

6ded93ac1d86831e11d69a3c57562b16.png

d9a29e0894bcb4d6b65808ffc2cb39fb.gif

数据驱动,成就未来,云和恩墨,不负所托!


云和恩墨创立于2011年,以“数据驱动,成就未来”为使命,是智能的数据技术提供商。我们致力于将数据技术带给每个行业、每个组织、每个人,构建数据驱动的智能未来。

云和恩墨在数据承载(分布式存储、数据持续保护)、管理(数据库基础软件、数据库云管平台、数据技术服务)、加工(应用开发质量管控、数据模型管控、数字化转型咨询)和应用(数据服务化管理平台、数据智能分析处理、隐私计算)等领域为各个组织提供可信赖的产品、服务和解决方案,围绕用户需求,持续为客户创造价值,激发数据潜能,为成就未来敏捷高效的数字世界而不懈努力。

0e9da0f2847438708bf19f0f465228d6.gif

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/122255
推荐阅读
相关标签
  

闽ICP备14008679号