分布式系统: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 原理定义了分布式计算系统的三大特性:
- 一致性(Consistency):共享数据副本之间呈现出统一且实时的数据内容;(强一致性=>完全一致)
- 可用性(Availability):所有的数据操作总会在一定时间内得到响应;(高可用性,不能出现延迟=>无故障必在有限时间内返回结果)
- 分区容错性(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
《区块链导论》_陈钟 单志广
分布式系统:FLP Impossibility/CAP原理相关推荐
- 分布式系统架构以及 CAP 原理
精选30+云产品,助力企业轻松上云!>>> 点击蓝色"大数据每日哔哔"关注我 加个"星标",第一时间获取大数据架构,实战经验 ● 本文主要分为 ...
- 分布式系统中的FLP不可能原理、CAP理论与BASE理论
前言 分布式系统是由多个不同的服务节点组成,节点与节点之间通过消息传递进行通信和协调.根据消息传递的不同,分布式系统的运行模型可以分为异步模型系统 和同步模型系统. 1.同步与异步 同步和异步关注的是 ...
- 【虾说区块链】分布式系统共识的FLP不可能原理与CAP猜想
2019独角兽企业重金招聘Python工程师标准>>> 欢迎收听「虾说区块链」.现在区块链这个概念在互联网上相当火热,这里简单做一个普及,不涉及项目推广投资,单纯地对区块链相关基础知 ...
- 分布式之cap、base理论、flp不可能原理、一致性问题、共识算法
一.CAP理论 CAP理论:在一个分布式系统中,最多只能满足C.A.P中的2个. CAP含义: C:Consistency 一致性:同一数据的多个副本是否实时相同.all nodes see the ...
- FLP不可能原理/CAP原理/ACID原则
FLP不可能原理:在网络可靠,但允许节点失效(即便只有一个)的最小化异步模型系统中,不存在一个可以解决一致性问题的确定性共识算法. FLP不可能原理实际上告诉人们,不要浪费时间,去为异步分布式系统设计 ...
- 分布式系统以及CAP原理
分布式系统以及CAP原理 文章首发于微信公众号:大数据每日哔哔.文章:分布式系统以及 CAP 原理 ● 本文主要分为以下几个部分:<br />什么是分布式系统<br />对 C ...
- Eureka工作原理(Eureka简介Eureka ServerEureka Client自我保护机制分布式系统中的CAP理论Eureka 工作流程)
一.Eureka简介 Eureka Server(注册中心,相当于zookeeper) Eureka Client: Provider Consumer 多个Eureka就叫集群.集群之间会定时通过r ...
- 分布式系统中CAP原理
分布式系统CAP原理 分布式系统发开虽然有点很多但是并不是完美的,CAP原理就是其中的体现之一. CAP原理:指的是在一个分布式系统中,Consistency(一致性).Availability(可用 ...
- 分布式系统的CAP原理及其应用
什么是分布式系统的CAP原理 在分布式系统中,一致性(C)指每一次读都得到最近的写数据,或者一个异常:可用性(A)指每一个请求都得到一个非异常的响应,而不保证取得最近的写数据:分区容错性(P)是指结点 ...
最新文章
- org.springframework.expression.spel.SpelEvaluationException: EL1005E:(pos 0): Type cannot be found
- 函数||值传递||函数的常见样式||函数的声明||函数的分文件编写
- 计算机应用能力测试攻略,计算机应用能力测试题(一).doc
- 【Mysql】 局域网远程连接问题
- springboot+aop切点记录请求和响应信息
- Win10系统如何解除U盘写保护模式
- 2014年03月 面试总结
- Android UI学习之RadioButton和RadioGroup
- 快速入门linux(收藏版)
- hc 05 蓝牙c语言程序,ATK-HC05 运用在STM32平台上的HC05蓝牙通信代码用C语言编写 - 下载 - 搜珍网...
- rabbitmq高可用集群搭建踩坑
- 计算机或可编程控制器,浅谈可编程控制器的应用
- Galaxy数据统计平台(二)
- H5Stream杂记-HTML中引入RTSP/RTMP源视频初学
- 阿里云服务器没有公网IP
- 【移动通信】5GC:5G的QoS (Quality of Service) 控制 服务质量管理
- 30.Android调试-连接夜深模拟器
- 离散系统的稳定性分析
- L. Spicy Restaurant(多源BFS+递推)
- K8S使用ceph-csi持久化存储之cephfs部署验证快照