分布式理论学习 | 青训营笔记

113 阅读8分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天

一、重点内容:

1.1 知识要点有哪些?

  • 分布式概述
  • 分布式理论基础
  • 分布式事务
  • 共识协议

二、详细知识点介绍:

2.1 分布式概述

分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。 分布式系统具有低成本、更高的可扩展性、更好的可用性、更高的性能、减少单点故障、提供冗余备份等优点。它可以让多台计算机相互连接,为系统的计算提供更多的吞吐量。它能够在受损的情况下或者网络不稳定的情况下,仍然能够保证系统的可用性,而且对于系统中不同的节点而言,数据也是可以实时分发的。

  • 常见的分布式存储系统包括Amazon S3、Google Cloud Storage、Hadoop Distributed File System(HDFS)、OpenStack Swift以及Microsoft Azure Blob Storage。
  • 常见的分布式数据库包括Cassandra、HBase、MongoDB、Redis、Neo4j等。
  • 常见的分布式计算技术包括Hadoop、MapReduce、Apache Spark、YARN、Zookeeper等。

2.2 分布式理论基础

2.2.1 CAP理论

CAP理论由Eric Brewer在2000年提出,它描述了分布式系统的三个基本要素之间的关系:一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)。CAP理论规定,在任何时候,一个分布式系统只能同时满足其中的两个要素。

在这个定理中,开发者必须明确自己要求系统的某一方面,并必须意识到在交换一种折衷的情况下,他们可能因此而失去另一种。例如,一致性和可用性是两个最常见的权衡,开发者必须明确其所需要的系统功能,并选择拥有较高可用性的分布式系统,这意味着它的一致性会受到影响,反之亦然。

2.2.2 ACID理论

ACID(原子性、一致性、隔离性和持久性)是用于定义分布式数据库和其它分布系统的四个基本概念。

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

2.2.3 Base理论

BASE理论是由Benjamin A. Strickland博士提出的一种软件工程理论。它代表了基本可用性、可扩展性、易操作性和可维护性。BASE理论的核心思想是要尽可能缩小和简化软件开发,以便开发出更实用、可靠和可维护的软件。

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

2.3 分布式事务

2.3.1 二阶段提交

二阶段提交是一种用于分布式系统的容错机制,它允许多个分布式节点协同完成一个复杂的工作流程。二阶段提交包括两个阶段:第一阶段是准备阶段,它负责准备要发送的信息,并且在系统执行之前将这些数据存储到安全的存储设备上;第二阶段是提交阶段,它负责向所有节点广播消息,并确认系统中的所有节点都已收到该消息,以确保系统的完整性。

2.3.2 三阶段提交

三阶段提交是分布式系统中常见的一种故障处理机制,可以有效地保证事务的一致性。它是一种将事务处理划分为三个不同的步骤的方法:准备阶段、提交阶段回滚阶段。在准备阶段,参与者预先计算自己的投票。当所有参与者都准备就绪并达成一致时,才进入提交阶段。在提交阶段,所有参与者都将决定提交,此时事务才得以最终提交。如果投票结果不一致,所有参与者会进入回滚阶段,重新执行准备阶段,并最终达成一致才能请求提交。

2.3.3 MVCC

MVCC是指多版本并发控制(Multi-Version Concurrency Control),是一种用于管理分布式数据库中的并发访问的技术。它的基本思想是为每个事务创建多个版本的数据,这样就不会有两个事务同时写入同一条记录,从而避免读取写入冲突。MVCC也可以用来确保脏读取事务在提交之前不会影响其他事务的数据可见性。

2.4 共识协议

2.4.1 Quorum NWR模型

Quorum NWR模型是一种分布式集群计算模型,用于将多台机器上的工作量分布到不同机器上进行并行处理。Quorum NWR模型的核心原理是,通过在网络中添加一个特定数量的“结点”来减少网络中的延迟,使得任务能够以最短时间完成。它使用一个称为NWR(Non-verifiable Web Replication)的算法来实现其效率,这个算法允许节点之间超快的信息传输,使系统能够实时更新。

2.4.2 RAFT协议

RAFT协议是一种分布式系统协议,旨在确保网络中的状态机正确和一致地执行操作。RAFT协议模拟选举过程,将节点分为“领导者”和“跟随者”。“领导者”用于处理客户请求和决定网络当前状态,而“跟随者”用于同步化网络并根据领导者的指示而进行操作。通过这种方式,网络中的状态机能够实现可靠的扩展和安全的访问。

  • Log (日志)︰节点之间同步的信息,以只追加写的方式进行同步,解决了数据被覆盖的问题
  • Term(任期号)∶单调递增,每个Term内最多只有一个Leader
  • Committed:日志被复制到多数派节点,即可认为已经被提交
  • Applied :日志被应用到本地状态机:执行了log中命令,修改了内存状态

2.4.3 Paxos协议

Paxos协议是一种用于在分布式系统中达成一致的算法。它允许多个集群成员在任何时候均可要求“一致性”;在多数情况下,这能够保证它们都拥有同一个唯一的结果。Paxos协议具有高可用性和高可扩展性,因此能够在海量数据的环境中发挥作用。它也可以应用于分布式系统中的事务处理。它可以通过状态机复制和日志复制的方式来实现共识机制,从而简化分布式系统的构建并且可以更加容易地定位和解决问题。 尽管在实际应用中,Paxos可能包含多个步骤,但它基本上可以将所有的决定行为拆分为三个步骤:建议,投票以及接收。

  • 在提议阶段,一个客户端发起一个提议,要求所有客户端都同意这个提议。
  • 在投票阶段,参与信息交换的客户端会投票表决,看看哪个提议得到全部客户端的认可。
  • 在接收阶段,被认可的提议会被广播到每一个客户端,作为最终的共识结果,从而确保整个系统有一致的结果。

三、引用参考

# 【后端专场 学习资料三】第五届字节跳动青训营