1 分布式架构的特点与问题
2 一致性协议
两阶段提交协议(2PC)
1. 由协调者向每个参与者发起事务请求,然后执行逻辑操作,协调者等待参与者的执行结果
2.协调者根据每个参与者第一步的执行结果,决定是否提交整个事务
2.1 如果有一个以上参与者在第一步返回false,则协调者在所有参与者上rollback事务
2.2如果第一步的所有参与者都返回true,则协调者要求对所有参与者执行commit(如果参与者没有收到协调者的提交事务请求,将不提交)
2PC的缺点:
1.同步阻塞,事务的执行时间取决于最慢的那个参与者,在此之前,全部参与者都被阻塞了
2.单点问题,协调者是一个单点,难以多点实现,一旦协调者出现故障,整个提交将无法使用
3.存在数据不一致的风险,如果因为网络故障等因素,一部分参与者收到了commit请求,而另外一部分参与者没有收到,则导致事务提交不一致,导致数据不一致。
4.
三阶段提交(3PC)
三阶段提交将2PC的第一阶段分成了两步:
1.协调者向每个参与者发起包含事务内容的事务探寻,询问各个参与者能否执行事务,参与者向协调者反馈结果
2.1 如果所有参与者都能够执行事务,则协调者请求各个参与者进行事务执行,然后参与者将执行状态反馈给协调者
2.2 如果第一阶段有参与者反馈无法执行事务,则中断事务
3.1 如果执行的是2.1,每个参与者执行的状态都是OK的,则协调者要求各个参与者进行事务提交(如果有参与者由于各种原因没有收到协调者的提交请求,参与者超时之后,将自行提交)
3.2 如果执行的是2.1,有参与者执行的状态失败了,协调者将要求各个参与者进行回滚,然后终止事务。
3PC相对2PC的优点,由于将2PC的第一步细分了,降低了执行颗粒度,减少了参与者的阻塞范围。
2PC的缺点在3PC里面都还存在。
3 paxos
paxos 的前提:分布式进程之间通信会出现重复,丢失,延迟等现象,但不会出现传错的现象
paxos的目的:在分布式进程中多个点情况下最终达成一致
4 zookeeper与paxos