这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天
对课程中学到的重要知识点做了笔记,方便后续的回顾
3. 分布式事务
3.1 两阶段提交
3.2 三阶段提交
三阶段提交vs两阶段提交
将两阶段提交中的Prepare阶段,拆成两部分:CanCommit和PreCommit机制
解决了两个问题:
- 单点故障问题
- 阻塞问题
思考,三阶段缓和了两阶段面临的问题,但依然没有解决:
- 性能问题
- 网络分区场景带来的数据—致性问题
3.3 MVCC
悲观锁:操作数据时直接把数据锁住,直到操作完成后才会释放锁;上锁期间其他人不能修改数据
乐观锁:不会上锁,只是在执行更新时判断别人是否修改数据,只有冲突时才放弃操作
MVCC是一种并发控制的方法.维持一个数据的多个版本使读写操作没有冲突。所以既不会阻塞写.也不阻塞读。MVCC为每个修改保存一个版本,和事务的时间戳相关联。可以提高并发性能.解决脏读的问题.
5. 共识协议
5.1 Quorum NWR模型
Quorum NWR三要素
N:在分布式存储系统中,有多少份备份数据
W:代表—次成功的更新操作要求至少有w份数据写入成功
R:代表—次成功的读数据操作要求至少有R份数据成功读取
为了保证强─致性,需要保证W+R>N
Quorum NWR模型将CAP的选择交给用户,是—种简化版的一致性模型。
5.2 raft协议
Raft协议是一种分布式一致性算法(共识算法),即使出现部分节点故障,网络延时等情况,也不影响各节点,进而提高系统的整体可用性。Raft是使用较为广泛的分布式协议。一定意义上讲,RAFT也使用了Quorum机制。
-
Leader -领导者 通常—个系统中是一主(Leader)多从(Follower)。 Leader负责处理所有的客户端请求,并向Follower同步请求日志,当日志同步到大多数节点上后,通知Follower提交日志。
-
Follower-跟随者 不会发送任何请求。接受并持久化Leader同步的日志,在Leader告知日志可以提交后,提交日志。当Leader出现故障时,主动推荐自己为Candidate。
-
Candidate-备选者 Leader选举过程中的临时角色。向其他节点发送请求投票信息。如果获得大多数选票,则晋升为Leader。
-
Log (日志) 节点之间同步的信息,以只追加写的方式进行同步,解决了数据被覆盖的问题
-
Term(任期号) 单调递增,每个Term内最多只有一个Leader
-
Committed 日志被复制到多数派节点,即可认为已经被提交
-
Applied 日志被应用到本地状态机:执行了log中命令,修改了内存状态
5.3 Paxos协议
4. 分布式实践
- MapReduce
- 分布式KV
课后个人总结
- 又继续了解了三阶段提交和MVCC
- 了解了下raft协议
参考资料
[分布式理论 - 现代架构基石]juejin.cn/post/719336…