分布式学习手记01 - 分布式系统简介
《分布式一致性原理与实践》 学习笔记
分布式系统
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
特点
-
分布性
系统内多台节点空间上任意分布,且分布情况会随时变动
-
对等性
系统内节点没有主从之分,没有控制主机,各节点是对等的,保持数据副本和服务副本冗余
-
并发性
对共享资源存在并发性操作
-
缺乏全局时钟
难以界定事件先后,缺乏全局的时钟序列控制
-
故障必然
任何在设计阶段考虑到的异常情况,一定会在系统实际运行中发生,此外还会有未曾预料的故障出现
分布式环境中的问题
-
通信异常
消息丢失和消息延迟是必然存在的
-
网络分区
“脑裂” ,系统出现局部小集群
-
三态
成功、失败、超时
-
节点故障
事务
事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元(Unit)
事务特征 ACID
ACID 是一种强一致性模型
-
原子性(Atomicity)
成功 or 失败撤销回滚
-
一致性(Consistency)
事务的执行不能破坏数据库数据的完整性和一致性
-
隔离性(Isolation)
不同事务并发操作相同的数据时,每个事务都有各自完整的数据空间,互相不干扰
事务隔离级别越高,越能保证数据的完整性和一致性,但对并发性能就影响越大
-
持久性(Durability)
事务一旦提交,它对数据状态的变更是永久性的
分布式事务
事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于分布式系统的不同节点上
一个分布式事务往往由多个分布式的操作序列组成,这一系列分布式的操作序列称为子事务。所以分布式事务可以定义为一种嵌套型的事务,也就具有 ACID 事务特性。但从整体上这种传统的单机事务模型已不太适用,需要在可用性和一致性上寻找平衡。
-
CAP 定理
一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三个基本需求,最多只能同时满足其中两项
分区容错性(P)是分布式系统和集中式系统本质区别,也是必须要解决的问题,在此基础上,根据业务特点在一致性(C)和可用性(A)间寻找平衡
-
BASE 定理
BASE 是面向大型高可用可扩展的分布式系统对 CAP 中一致性和可用性权衡的结果
核心思想是即使无法做到强一致性,但每个事务可以根据自身特点,采用适当的方式使整个系统达到最终一致性
-
基本可用(Basically Available)
分布式系统在出现不可预知故障时,允许损失部分可用性,如响应时间稍长或部分功能降级,但不能造成系统不可用
-
弱状态(Soft state)
在不影响系统整体可用性前提下,允许系统中数据存在中间状态,即允许系统在不同节点的数据副本间进行同步过程中存在延时
-
最终一致性(Eventually consistent)
需要系统保证最终数据能达到一致,而不需实时保证系统中数据的强一致性
-