这是我参与[第五届青训营]伴学笔记创作活动的第8天。
简介
本篇笔记主要是记录分布式理论的基础知识。
概述
分布式:所谓分布式就是指数据和程序可以不位于一个服务器上,而是分散到多个服务器,以网络上分散分布的地理信息数据及受其影响的数据库操作为研究对象的一种理论计算模型。分布式有利于任务在整个计算机系统上进行分配与优化,克服了传统集中式系统会导致中心主机资源紧张与响应瓶颈的缺陷,解决了网络 GIS 中存在的数据异构、数据共享、运算复杂等问题,是地理信息系统技术的一大进步。
故障模型:
- Byzantine failure:节点可以任意篡改发送给其他节点的数据,是最难处理的故障
- Authentication detectable byzantine failure (ADB):节点可以篡改数据,但不能伪造其他节点的数据
- Performance failure:节点未在特定时间段内收到数据,即时间太早或太晚
- Omission failure:节点收到数据的时间无限晚,即收不到数据
- Crash failure:节点停止响应,持续性的故障
- Fail-stop failure:错误可检测,是最容易处理的故障
一致性:系统中的特定元素在某一时刻的状态,这种状态要满足特定的要求,如数据一致性,这就要求我们多个服务器种保持的数据副本的数据要一致。
共识:在多个进程间进行协调来确定所有进程的下一个操作。 (一致性为目的,共识算法为手段)。
CAP理论:一个分布式系统最多只能同时满足一致性、可用性和分区容错性这三项中的两项。
ACID理论:是针对CA系统提出的,其四个特性分别为原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
BASE理论:是针对AP系统提出的,其目的在于采用适合的方式达到最终一致性。
- 基本可用(Basically Available): 基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的体现。
- 软状态(Soft State): 软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。MySQL -Replication 的异步复制也是一种体现。
- 最终一致性(Eventual Consistency): 最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。
分布式事务:
- 二阶段提交:为了使基于分布式系统架构下的所有节点在进行事务提交时保持一致性而设计的一种演算法,分为 Prepare 阶段和 Commit 阶段。
- 三阶段提交:针对两阶段提交的补充,将两阶段提交中的 Prepare 阶段,拆成两部分:CanCommit 和 PreCommit 机制