分布式系统初探

当下,信息和计算需求爆炸式增长,单机性能已经难以满足要求,此外,摩尔定律逐渐失效、单机性能提升速度放缓,单机性能短时间内无法取得突破性进步。在这样的背景下,分布式系统已然成为现代架构的基石,即通过多个独立的计算节点的计算资源来完成共同的目标。

什么是分布式

分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。具体来说,分布式包括分布式计算、分布式存储、分布式数据库等多种应用场景。

分布式的优势包括:

  • 去中心化
    • 不依赖于特定的中心主机,不会因为一台机器的崩溃造成整个计算系统的崩溃
  • 低成本
    • 对单机性能没有过高要求,完全可以使用多个性能相对较低的机器实现一个性能较高的机器的效果
  • 弹性
    • 可以随时增加和减少计算节点
  • 资源共享
    • 各个计算节点共享资源
  • 可靠性高
    • 单个节点的故障不影响整体

但同时,分布式技术也面临着一些挑战,例如:不可靠的网络、异构的机器与硬件环境、安全防护等。

常见的分布式系统

常见的分布式存储系统:

  • Google File System(GFS):Google出品的分布式文件系统
  • Ceph:统一的分布式存储系统
  • Hadoop HDFS:基于GFS架构的开源分布式文件系统
  • Zookeeper:高可用的分布式数据管理与系统协调框架

常见的分布式数据库系统:

  • Google Spanner:Google出品的可扩展、全球分布式的数据库
  • TiDB:开源的分布式关系型数据库
  • HBase:开源的NoSQL数据库
  • MongoDB:文档数据库

常见的分布式计算系统:

  • Hadoop:基于MapReduce计算模型的分布式计算框架
  • Spark:在Hadoop基础上加以改进的分布式计算框架,特点是使用内存而不是外置磁盘存储数据
  • YARN:分布式资源调度系统

分布式系统故障模型

这里列出分布式系统中常见的故障模型,在分布式系统的设计中,应当建立这些故障模型并设置相应的处理逻辑。

  • Byzantine Failure:节点可以任意篡改发送给其他节点的数据
  • Authentication Detectable Byzantine(ADB) Failure:是Byzantine Failure的特例,节点可以篡改数据,但不能伪造其他节点的数据
  • Performance Failure:节点未在特定时间段内收到数据,即收到数据的时间点太早或太晚
  • Omission Failure:节点收到数据的时间无限晚,即收不到数据
  • Crash Failure:在Omission Failure的基础上增加了节点停止响应的假设,可以看作是持续性的Omission Failure
  • Fail-Stop Failure:在Crash Failure的基础上增加了错误可检测的假设

举例来说,节点的磁盘故障(例如磁头不寻道、磁介质损伤等)可能会带来Fail-Stop Failure(错误可被节点发现);磁盘坏道、坏块问题可能会带来Fail-Stop Failure和ADB Failure(本机数据错误,但其他节点的数据不受影响);主板故障可能会导致Crash Failure(节点完全崩溃);网络故障可能会带来Byzantine Failure(网络问题导致数据发生错误),等等。

分布式系统理论基础

分布式系统建立在相关理论的基础之上,设计分布式系统时需要注意遵循这些原则和理论。这里简要介绍CAP理论、ACID理论和BASE理论。

CAP理论

CAP是Consistence、Availability和Partitioning(这里指Network Partitioning)三个单词的首字母缩写。这三个概念的基本含义是:

  • Consistence:一致性。它指的是数据在多个副本之间能够保持(严格的)一致性的特性
  • Availability:可用性。它是指系统提供的服务必须一直处于可用的状态,即每次请求都能获取到非错的响应(但不保证获取的数据是最新数据)
  • Network Partitioning:网络分区。它指的是分区容错能力,分布式系统在遇到网络中任何分区的故障时,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障。

CAP理论通常用于数据库领域,但也适用于分布式存储的方向。

在上面的C、A、P三个性质中,有时为了达到某些要求,会追求其中的某一部分而放弃另一部分性质,比如:

  • CA:放弃网络分区容错机制,加强一致性和可用性,典型的例子是传统的单机数据库(因为数据库存储不是分布式的,所以没有网络分区容错的要求)
  • AP:放弃强一致性,追求分区容错性和可用性,这在一些注重用户体验的系统上比较常见,例如文档协作可以容忍不同终端之间的短时间的不一致
  • CP:放弃可用性,追求一致性和分区容错性,例如与金融安全相关的系统(宁可服务短时间中断,也不能出现不一致的数据,例如交易系统的数据如果不一致将带来较大经济损失)

ACID理论

ACID理论是针对数据库事务提出的,约束了数据库事务的特性。事务是数据库管理系统执行过程中的一个逻辑单元,它保证一个事务中的所有操作要么全部执行,要么全部不执行。

ACID是数据库事务的四个特性Atomicity、Consistence、Isolation和Durability的首字母缩写,这些特性的含义分别是:

  • Atomicity:原子性,指的是事务包含的所有操作要么全部成功,要么全部失败,回滚到操作之前的状态
  • Consistency:一致性,指的是事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态
  • Isolation:隔离性,指的是当多个用户并发访问数据库时,数据库为每一个用户开启的事务不能被其他事务的操作所干扰,也就是多个并发事务之间要相互隔离
  • Durability:持久性,指的是一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作

BASE理论

BASE理论是对CAP理论中的一致性和可用性权衡的结果,其来源于对大型互联网分布式实践的总结,是基于CAP定理逐步演化而来的。BASE是对Basically Available、Soft state和Eventually consistent的首字母缩写,其具体含义为:

  • Basically Available:基本可用,是指假设系统出现了不可预知的故障,系统仍然能用,但较正常系统而言存在响应时间或系统功能上的损失
  • Soft state:软状态,这一状态指的是数据中间状态,含义是允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时
  • Eventually consistent:最终一致性,指的是系统能够保证在没有其他新的更新操作的情况下,数据最终一定能够达到一致的状态,因此所有客户端对系统的数据访问最终都能够获取到最新的值

分布式系统初探
https://young-cloud-creator.github.io/distributed-system/
作者
Young Cloud Creator
发布于
2023年2月28日
许可协议