分布式系统:FLP Impossibility/CAP原理

分布式系统:

分布式系统的概念:

分布式系统是一组自治计算机系统的集合,这些系统在物理上是分开的,但通过配备分布式系统软件的集中式计算机网络连接起来。自治计算机将通过共享资源和文件并执行分配给它们的任务在每个系统之间进行通信。

分布式系统与集中式系统有很大的区别:

分布式系统是由若干独立的计算机节点组成的系统,这些计算机节点可以看成独立的系统组件,通过网络进行连接并在一定范围内有效共享资源,节点之间通过传递消息进行协调工作,共同完成系统内的工作任务。

集中式系统由一台或者多台计算机组成中心节点,负责管理应用访问的数据存储、计算等资源;

分布式系统的定义:

定义包含两方面:

  • 系统内的计算机节点都是独立的,通过网络通信进行协调
  • 用户对于分布式系统的访问从功能逻辑上就像访问单个计算机系统一样

分布式系统奠基者 Leslie Lamport :

A system is distributed if the message transmission delay is not egligible

维基百科中 distributed computing 的定义:

1.There are several autonomous computational entities ( computers or nodes ), each of which has its own local memory.The entities communicate with each other by message passing.

分布式的系统特征:

1.分布性:分布式系统内计算机节点可以分布在不同的位置。

2.可扩展性:分布式系统内节点数量可以根据应用需求进行动态増减,服务器也可以动态部署。

3.对等性:分布式系统没有中心化的控制主机,组成分布式系统的所有计算机节点都是对等的;当某一个节点上存储的数据丢失时,可以从副本上读取该数据。

4.并发性:分布式系统中的多个计算机节点通过网络进行连接并在一定范围内有效共享资源,某一时刻这些计算机节点可能会并发地操作一些共享的资源。

FLP Impossibility原理:

FLP Impossibility原理是一个关于分布式系统达成共识的重要理论。 异步通信的分布式系统在任意场景下都能实现共识的算法是不存在的,因为在其网络可靠,但允许节点失效(即便只有一个)的最小化异步模型系统中,不存在一个可以解决一致性问题的确定性共识算法。 在实际异步通信的分布式系统环境下,可能存在通信故障、延迟或者节点本身出现失效的情况,异步系统无法确保在有限时间内完成一致性

同步通信与异步通信 =>延迟是否有上限

FLP定理回答了以下关于共识的基本问题: 在异步分布式系统中,是否存在能够满足一致性、有效性、终止性和容错性的确定性共识算法? 正如定理中的“不可能”一词所暗示的那样,Fisher、Lynch和Paterson已经表明,即使是单个节点故障,也不可能实现共识算法。

参见:Practical Understanding of FLP Impossibility for Distributed Consensus | by Melodies Sim | Level Up Coding (gitconnected.com)

CAP 原理:

CAP 原理定义了分布式计算系统的三大特性

  1. 一致性(Consistency):共享数据副本之间呈现出统一且实时的数据内容;(强一致性=>完全一致)
  2. 可用性(Availability):所有的数据操作总会在一定时间内得到响应;(高可用性,不能出现延迟=>无故障必在有限时间内返回结果)
  3. 分区容错性(Partition):通常由于网络间连接中断而导致网络中的节点相互隔离无法访问时,被隔离的节点仍可正常运行,(网络意义上的分区,分区=>无一致性

比如:

保证一致性,分区容错性的情况下:

为了保证一致性,A同学=>B同学通信,如果网络故障。分区容错性保证A同学仍旧可以通信。那么此时,访问A同学正常,访问B同学无法返回正确信息。=>无可用性

保证可用性,分区容错性的情况下:

A同学=>B同学通信,如果网络故障或延迟=>A/B同学保存的数据不一致=>无一致性

保证一致性,可用性的情况下: 仅当网络可靠的情况下可以保证=>无分区=>无分区容错性

这三大特性无法同时实现,设计中需要弱化其中某个特性,而保证另外两个特性。

  • 对于结果一致性要求不是特别高的应用,比如延长达成一致性的时间。=>可弱化一致性要求
  • 对于一致性要求高的应用,比如系统发生故障时拒绝服务。=>可弱化可用性要求
  • 大部分时候网络都是可靠的,网络分区出现概率小但很难完全避免。=>可弱化分区容错性

*分布式系统的一致性是设计分布式系统时应考虑的最核心问题。

分布式系统的一致性

一致性的理解:

对系统内的所有计算机节点给定一组操作,按照约定的规则协议,节点之间对于操作后的最终处理结果达成某种共同认可的状态。

影响分布式系统最终全局状态结果一致性的因素:

不同计算机节点处于不同的地理位置

计算性能也存在差异

对于相同数据任务完成计算耗费的时间无法保证一致

节点之间进行网络通信也有可能因为通信链路故障而导致消息接收延迟

根源:不确定性、不可靠的网络、不可靠的时钟

全局时钟&时间戳构建新计数器

全局时钟:

假设每份数据有三个副本,分别落到三个节点上。当Client1尝试将X的值置为1时,严格一致性要求当Client1完成更新操作以后,所有Client都要在最新值的基础上进行读写,这里的Client10读取到的值是x=1,在同一时刻Client100的更新操作也是在x=1的基础上进行x+=1操作,在下一个时刻Client1000读到的任意一个副本,X的值都会是2。

时间戳构建新计数器

D1先后更新了x=1,x=2,D3先后更新了a=1,a=2。当Client读取到D2节点时,按照顺序一致性要求,所有节点的操作相对顺序都是相同的,一定是x=1在x=2之前,a=1在a=2之前,举例的是顺序一致性的其中一种情况。

分布式系统达成一致性状态的基本要求

  • 收敛性(termination):一致的结果在有限时间内能完成;
  • 一致性(agreement):不同节点最终完成决策的结果是相同的;=>达成了共识的,即安全性(safety)
  • 有效性(validity):决策的结果必须是某个节点提出的提案;

其中:收敛性是分布式系统计算机服务可以正常使用的前提;有效性主要指分布式系统最终一致性是由分布式系统内的节点执行的结果

目标:系统在出现各种故障(通信异常、网络分区、超时现象、节点故障等)发生的情况下,依然能正常满足工作的要求,最终系统通过检测和处理,节点依然能达成全局一致性状态。 容错率:分布式系统的一致性表明,系统本身具有容忍一定数量节点发生错误行为的能力。这些发生错误行为的节点称为故障节点,占整个分布式系统全部节点数量的比例称为分布式系统的容错率。

参考

What is a Distributed System? - GeeksforGeeks

3. Week 03: Raft, FLP, CAP, and Byzantine Fault Tolerance — CS6213 2021

https://levelup.gitconnected.com/practical-understanding-of-flp-impossibility-for-distributed-consensus-8886e73cdfe5

《区块链导论》_陈钟 单志广

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值