这是我参与「第五届青训营 」伴学笔记创作活动的第8天
什么是分布式
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。
优势︰
1.去中心化
2.低成本
3.弹性
4.资源共享
5.可靠性高
挑战:
1.普遍的节点故障
2.不可靠的网络
3.异构的机器与硬件环境
4.安全
拜占庭将军问题
引入︰两将军问题(Two Generals' Problem ):两支军队的将军只能派信使穿越敌方领土互相通信,以此约定进攻时间。该问题希望求解如何在两名将军派出的任何信使都可能被俘虏的情况下,就进攻时间达成共识。
结论是,此问题无解,通信问题无法达成共识.
CAP理论
CAP理论往往运用于数据库领域,同样可以适用于分布式存储方向
CA:放弃分区容错性,加强一致性和可用性,其实就是传统的单机数据库的选择
AP:放弃一致性(这里说的一致性是强一致性),追求分区容错性和可用性,例如一些注重用户体验的系统
CP:放弃可用性,追求一致性和分区容错性,例如与钱财安全相关的系统
二阶段提交
可能出现的情况︰
情况1 ) Coordinator不宕机,Participant宕机。如下图所示,需要进行回滚操作
情况2 ) Coordinator宕机,Participant不宕机。可以起新的协调者,待查询状态后,重复二阶段提交
情况3) Coordinator宕机,Participant宕机。
回滚∶在Prepare阶段,如果某个事务参与者反馈失败消息,说明该节点的本地事务执行不成功,必须回滚。
三阶段提交vs两阶段提交
将两阶段提交中的Prepare阶段,拆成两部分CanCommit和PreCommit机制
解决了两个问题
1.单点故障问题 2.阻塞问题
RAFT协议
Raft协议是一种分布式一致性算法(共识算法),即使出现部分节点故障,网络延时等情况,也不影响各节点,进而提高系统的整体可用性。Raft是使用较为广泛的分布式协议。一定意义上讲,RAFT也使用了Quorum机制