这是我参与「第五届青训营 」伴学笔记创作活动的第 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协议复杂,可以有多个主节点同时对外处理,因此写入性能较高。但一旦出错,恢复过程较为麻烦。