分布式理论 | 青训营

136 阅读2分钟

分布式系统是由跨多个节点的计算机程序组成的集合。使用分布式系统具有以下五大优势:去中心化、低成本、弹性、资源共享以及高可靠性。然而,分布式系统也面临一些挑战,包括故障、网络、环境和安全性问题。

故障模型用于描述可能发生在分布式系统中的不同类型的故障情况:

  1. Byzantine Failure(拜占庭故障):节点可以任意篡改发送给其他节点的数据,是最难处理的故障类型。
  2. Authentication Detectable Byzantine Failure(ADB,可检测的拜占庭故障):节点可以篡改数据,但不能伪造其他节点的数据。
  3. Performance Failure(性能故障):节点未在特定时间段内收到数据,即时间太早或太晚。
  4. Omission Failure(遗漏故障):节点收到数据的时间无限晚,即收不到数据。
  5. Crash Failure(崩溃故障):节点停止响应,持续性的故障。
  6. Fail-stop Failure(停止故障):错误可被检测,是最容易处理的故障。

拜占庭将军问题是一个经典的分布式系统中的共识问题。它包括两个版本:

  1. 两将军问题:两支军队的将军需要通过派信使来协商进攻时间,但由于信使可能被俘虏,将军之间永远无法达成共识。
  2. 三将军问题:在两个忠诚将军和一个叛徒将军的情况下,叛徒可能传递不同的信息给忠诚将军,导致无法达成共识。

然而,通过引入一个中央节点或者特定的协议,例如四将军问题,可以在一些特定条件下实现分布式系统中的共识。

共识和一致性在分布式系统中是重要的概念。不同客户端可能因为时机不同而产生数据读取的偏差,这导致了最终一致性的概念。为了保证所有客户端看到相同的值,需要多个节点进行协商,以达成共识,从而实现线性一致性。然而,一致性和可用性之间存在一定的矛盾。

时间和事件顺序在分布式系统中也是关键概念。Leslie Lamport 在 1978 年的论文《Time, Clocks, and the Ordering of Events in a Distributed System》中提出了事件发生的顺序和时间的概念,引入了 happened before 的概念来定义事件之间的顺序关系。逻辑时钟被创造出来,用于推导分布式系统中事件的逻辑先后关系,实现事件的全序排序。