auto commit
This commit is contained in:
@ -16,7 +16,6 @@
|
||||
* [故障检测](#故障检测)
|
||||
* [故障恢复](#故障恢复)
|
||||
* [五、一致性协议](#五一致性协议)
|
||||
* [两阶段提交协议](#两阶段提交协议)
|
||||
* [Paxos 协议](#paxos-协议)
|
||||
* [Raft 协议](#raft-协议)
|
||||
* [拜占庭将军问题](#拜占庭将军问题)
|
||||
@ -209,28 +208,6 @@ BASE 是 Basically Available(基本可用)、Soft State(软状态)和 Ev
|
||||
|
||||
# 五、一致性协议
|
||||
|
||||
## 两阶段提交协议
|
||||
|
||||
Two-phase Commit(2PC)。
|
||||
|
||||
可以保证一个事务跨越多个节点时保持 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 Commit(2PC)。
|
||||
|
||||
当 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>
|
||||
|
||||
|
Reference in New Issue
Block a user