这是我参与「第五届青训营 」笔记创作活动的第6天
分布式
什么是分布式
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算点的计算资源来实现共同目标。可以分为分布式计算、分布式存储、分布式数据库等
优势:
- 去中心化
- 低成本
- 弹性
- 资源共享
- 可靠性高
挑战:
- 普遍的节点故障
- 不可靠的网络
- 异构机器与硬件环境
- 安全
为什么需要分布式:
- 数据爆炸对存储和计算有大规模运用需求
- 成本低,建立在廉价服务器之上
系统模型
故障模型
- Byzantine failure
节点可以任意篡改发送给其他节点的数据 - Authentication detectable byzantine failure(ADB)
Byzantine特例;节点可以篡改数据但不能伪造其他节点的数据 - Performance failure
节点过早或过晚内收到数据 - omission failure
节点收到的数据时间无限晚,收不到数据 - Crash failure
在omission基础上增加节点停止响应假设,即持续性的omission failure - Fail-stop failure
Crash failure基础上增加错误可检测假设
时间和事件顺序
- 定义了计算机系统中的时间和事件顺序,引入happened before和并发的定义,可以以此对分布式系统中的事件进行推导
- 根据上述推导,创造了Lamport逻辑时钟的概念,这个概念在分布式理论中具有革命性的意义,帮助我们在一系列分布式事件当中梳理出逻辑的先后关系。利用逻辑时钟,我们可以对整个系统中的事件进行全序排序
理论基础
CAP理论
- C(Consistence)一致性
- A(Avaliability)可用性
- P(Network Partitioning)分区容错性
CAP往往无法实现,必须舍弃一部分
ACID理论
- A原子性:事务要么全部操作成功,要么失败回滚
- C一致性:事务执行之前之后都必须处于一致性状态
- I隔离性:事物之间相互隔离
- D持久性:事物一旦被提交,改变是永久的,即便数据库系统故障也不会丢失提交事务操作
BASE理论
BASE理论是对CAP理论中一致性和可用性权衡的结果,核心思想是:
- Basically Avalible(基本可用)
- Soft State(软状态)
- Eventually Consistent(最终一致性)
分布式事务
二阶段提交
二阶段提交:是为了使基于分布式系统架构下所有节点在进行事务提交时保持一致性而设计的算法。
- 引入协调者Coordinator和参与者Participants互相进行网络通信
- 所有节点都采用预写式日志
- 所有节点不会永久性损坏
异常情况:
- Coordinator不宕机,Participants宕机,需要回滚
- Coordinator宕机,Participants不宕机,新启动一个Coordinator
- 都宕机,数据管理员介入
三阶段提交
将两阶段提交中的prepare阶段拆分为:CanCommit和PreCommit机制
解决了:
1、单点故障
2、阻塞问题
MVCC
悲观锁
悲观锁:操作数据时直接把数据锁住,直到修改成功才释放,上锁期间不许其他人修改
乐观锁
乐观锁:不会上锁,只是执行更新的时候判断别人是否修改数据,冲突时才会放弃操作
MVCC
而MVCC是另一种并发控制方法,维持一个数据的多个版本使得读写没有冲突。所以既不会阻塞读也不会阻塞写。MVCC会保存每一个修改的版本,和事务时间戳关联。可以提高并发性能,解决脏读问题。
小结
今天课程中主要讲述了分布式理论6个方面内容,数据和程序可以不位于一个服务器上,而是分散到多个服务器,以网络上分散分布的地理信息数据及受其影响的数据库操作为研究对象的一种理论计算模型。