分布式理论 | 青训营笔记

89 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天。今天学习了分布式理论的相关知识以及应用实践。

课程大纲

1. 分布式概述

定义:分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。分布式的具体应用包含分布式计算、分布式存储、分布式数据库等。

优势:去中心化、低成本、弹性、资源共享、可靠性高

挑战:节点故障、网络不可靠、机器异构、不安全

常见的分布式系统:

2. 系统模型

分布式故障类型

(根据处理的难易程度进行划分)

拜占庭将军问题

难以获得理论解,一般只有工程解(tcp协议),可以通过加密解密的方法将错误发生几率降到最低。

共识和一致性

最终一致性:保证最终过程读到的值一致

线性一致性:一个客户端读到某个值,就必须返回新值到另外的客户端

时间和事件顺序

目的:对分布式系统中的事件进行全序排序,越靠左下方的逻辑时钟越早,反之越靠右上方的则越晚。

3. 系统理论

CAP理论

C:多个副本一致性、A:服务的可用性、P:分布式不同分区的容错性

分布式系统中P被采用,因此需要在可用性和一致性之间做出选择,解决思路为主从复制、故障转移的方式。

ACID理论

事务是数据库管理系统执行过程中的一个逻辑单元,ACID是事务的四个特性。

原子性(强调操作)、一致性(强调状态,如银行对账)、隔离性(并发事务相互隔离)、持久性(不会丢失事务)

BASE理论

优先选取可用性而放弃一致性的AP系统的指导理论(适用于一些注重体验的场景),包含:基本可用、允许不同状态在一定程度上的不一致、最终一致性(数据最终能达成一致)

4. 分布式事务

二阶段提交

定义:基于分布式系统架构下所有节点进行事务提交时,保持一致性而设计的一种演算法

三阶段提交

引入了precommit阶段,以防开启事务后,由于不合法还需要进行回滚的情况出现。

MVCC

悲观锁:操作数据时直接将数据锁住

乐观锁:执行更新时同时取锁,只有一个会成功

MVCC定义:并发控制的方法,通过维持一个数据各个时间戳的多版本数据,从而提高并发性能、解决脏读的问题。通过硬件或TSO维持时间戳。

5. 共识协议

Quorm NWR

用于只允许追加而不能覆盖的场景,WR的值可调整

RAFT协议

三个角色:Leader、Follower、Candidate

Learder选举过程:

Log Replication过程:

切主过程:

切主后需要设置timeout来保证数据的强一致性,此时会丧失一定的可用性

Paxos协议

比Raft协议复杂,可以有多个主节点同时对外处理,因此写入性能较高。但一旦出错,恢复过程较为麻烦。

6. 分布式实践

MapReduce

分布式KV