auto commit

This commit is contained in:
CyC2018
2018-05-31 21:01:23 +08:00
parent 40d9a164a9
commit c85cab44ce
7 changed files with 145 additions and 183 deletions

View File

@ -16,7 +16,6 @@
* [故障检测](#故障检测)
* [故障恢复](#故障恢复)
* [五、一致性协议](#五一致性协议)
* [两阶段提交协议](#两阶段提交协议)
* [Paxos 协议](#paxos-协议)
* [Raft 协议](#raft-协议)
* [拜占庭将军问题](#拜占庭将军问题)
@ -209,28 +208,6 @@ BASE 是 Basically Available基本可用、Soft State软状态和 Ev
# 五、一致性协议
## 两阶段提交协议
Two-phase Commit2PC
可以保证一个事务跨越多个节点时保持 ACID 特性,也就是说它可以用来实现分布式事务。
两类节点协调者Coordinator和参与者Participants协调者只有一个参与者可以有多个。
### 1. 运行过程
1. 准备阶段:协调者询问参与者事务是否执行成功;
2. 提交阶段:如果事务在每个参与者上都执行成功,协调者发送通知让参与者提交事务;否则,协调者发送通知让参与者回滚事务。
需要注意的是,在准备阶段,参与者执行了事务,但是还未提交。只有在提交阶段接收到协调者发来的通知后,才进行提交或者回滚。
<div align="center"> <img src="../pics//07717718-1230-4347-aa18-2041c315e670.jpg"/> </div><br>
### 2. 存在的问题
- 参与者发生故障。解决方案:可以给事务设置一个超时时间,如果某个参与者一直不响应,那么认为事务执行失败。
- 协调者发生故障。解决方案:将操作日志同步到备用协调者,让备用协调者接替后续工作。
## Paxos 协议
用于达成共识性问题,即对多个节点产生的值,该算法能保证只选出唯一一个值。
@ -253,7 +230,7 @@ Two-phase Commit2PC
当 Acceptor 接收到一个提议请求,包含的提议为 [n1, v1],并且之前还未接收过提议请求,那么发送一个提议响应,设置当前接收到的提议为 [n1, v1],并且保证以后不会再接受序号小于 n1 的提议。
如下图Acceptor X 在收到 [n=2, v=8] 的提议请求时,由于之前没有接收过提议,因此就发送一个 [no previous] 的提议响应,并且设置当前接收到的提议为 [n=2, v=8],并且保证以后不会再接受序号小于 2 的提议。其它的 Acceptor 类似。
如下图Acceptor X 在收到 [n=2, v=8] 的提议请求时,由于之前没有接收过提议,因此就发送一个 [no previous] 的提议响应,设置当前接收到的提议为 [n=2, v=8],并且保证以后不会再接受序号小于 2 的提议。其它的 Acceptor 类似。
<div align="center"> <img src="../pics//3f5bba4b-7813-4aea-b578-970c7e3f6bf3.jpg"/> </div><br>