@@ -106,51 +106,51 @@ The Dynamic Two-phase Commit Protocol (动态两阶段提交,D2PC,d2pc,Dyn
106
106
107
107
事务中的协调者在收到各个参与者反馈后,做出判断,出现以下两种情况:
108
108
109
- ** 1、 ** 如果事务中的所有参与者都表示可以提交事务,则做执行 ** 事务预提交**
109
+ ** 1. ** 如果事务中的所有参与者都表示可以提交事务,则做执行 ** 事务预提交**
110
110
111
- ** ⑴、 发送预提交请求: ** 事务中的协调者向各个参与者发送预提交(PreCommit)指令,并进入已准备(prepared)状态;
111
+ ** 1.1. 发送预提交请求** : 事务中的协调者向各个参与者发送预提交(PreCommit)指令,并进入已准备(prepared)状态;
112
112
113
- ** ⑵、 事务预提交: ** 事务中的参与者接受到协调者的预提交(PreCommit)指令,会执行事务操作,并将undo和redo信息记录到事务日志中。(undo和redo分别表示撤销和恢复);
113
+ ** 1.2. 事务预提交** : 事务中的参与者接受到协调者的预提交(PreCommit)指令,会执行事务操作,并将undo和redo信息记录到事务日志中。(undo和redo分别表示撤销和恢复);
114
114
115
- ** ⑶、 反馈事务预提交的结果: ** 在参与者成功的执行了事务操作,并向协调者返回ACK响应,如果协调者出现故障,那么参与者将不断的重试发送ACK。之后开始等待最终事务提交指令。
115
+ ** 1.3. 反馈事务预提交的结果** : 在参与者成功的执行了事务操作,并向协调者返回ACK响应,如果协调者出现故障,那么参与者将不断的重试发送ACK。之后开始等待最终事务提交指令。
116
116
117
- ** 2、 ** 如果其中之一的参与者表示不能提交事务或超时反馈,则做 ** 中断事务** 处理
117
+ ** 2. ** 如果其中之一的参与者表示不能提交事务或超时反馈,则做 ** 中断事务** 处理
118
118
119
- ** ⑴、 发送中断事务指令: ** 事务中的协调者向各个参与者发送中断指令(abort);
119
+ ** 2.1. 发送中断事务指令** : 事务中的协调者向各个参与者发送中断指令(abort);
120
120
121
- ** ⑵、 中断事务: ** 各个参与者就收到中断指令或超时未收到任何指令时,会做中断事务处理。
121
+ ** 2.2. 中断事务** : 各个参与者就收到中断指令或超时未收到任何指令时,会做中断事务处理。
122
122
123
123
124
124
125
125
#### 阶段三:执行提交阶段(DoCommit):
126
126
127
127
事务中的协调者在先接收各个参与者的反馈,然后做出判断,也会出现以下两种情况:
128
128
129
- ** 1、 ** 如果事务中的参与者成功执行的预提交事务操作,并返回成功ACK,则 ** 执行事务提交** :
129
+ ** 1. ** 如果事务中的参与者成功执行的预提交事务操作,并返回成功ACK,则 ** 执行事务提交** :
130
130
131
- ** ⑴、 发送执行事务提交指令: ** 事务协调者发送执行事务提交指令给各个参与者;
131
+ ** 1.1. 发送执行事务提交指令** : 事务协调者发送执行事务提交指令给各个参与者;
132
132
133
- ** ⑵、 事务提交: ** 各个参与者收到协调者发送的执行事务提交的指令,然后执行事务提交;
133
+ ** 1.2. 事务提交** : 各个参与者收到协调者发送的执行事务提交的指令,然后执行事务提交;
134
134
135
- ** ⑶、 反馈事务提交结果: ** 各个参与者执行完事务提交操作后,反馈结果给事务协调者;
135
+ ** 1.3. 反馈事务提交结果** : 各个参与者执行完事务提交操作后,反馈结果给事务协调者;
136
136
137
- ** ⑷、 完成事务: ** 协调者接收到各个参与者执行提交的反馈,事务完成。
137
+ ** 1.4. 完成事务** : 协调者接收到各个参与者执行提交的反馈,事务完成。
138
138
139
139
140
140
141
- ** 2、 ** 如果事务中的参与者执行预提交事务操作失败或超时反馈,则 ** 中断事务** :
141
+ ** 2. ** 如果事务中的参与者执行预提交事务操作失败或超时反馈,则 ** 中断事务** :
142
142
143
- ** ⑴、 发送中断事务指令: ** 事务中的协调者向各个参与者发送中断指令(abort);
143
+ ** 1.1. 发送中断事务指令** : 事务中的协调者向各个参与者发送中断指令(abort);
144
144
145
- ** ⑵、 事务回滚: ** 各个参与者收到协调者发送的执行事务回滚的指令,然后执行事务回滚;
145
+ ** 1.2. 事务回滚** : 各个参与者收到协调者发送的执行事务回滚的指令,然后执行事务回滚;
146
146
147
- ** ⑶、 反馈事务回滚结果: ** 各个参与者执行完事务回滚操作后,反馈结果给事务协调者;
147
+ ** 1.3. 反馈事务回滚结果** : 各个参与者执行完事务回滚操作后,反馈结果给事务协调者;
148
148
149
- ** ⑷、 中断事务: ** 协调者接收到各个参与者执行回滚的反馈,事务中断。
149
+ ** 1.4. 中断事务** : 协调者接收到各个参与者执行回滚的反馈,事务中断。
150
150
151
151
152
152
153
- ** 说明: ** 执行提交阶段(DoCommit)时,可能协调者或网络出现问题,都有可能导致事务的部分参与者无法接收到协调者的指令(包括执行提交和中断事务),在这种情况下,部分参与者会在超时等待之后继续进行事务提交。有一定小概率会指定数据不一致的情况,所以这也是3PC协议的一大缺点。
153
+ ** 说明** : 执行提交阶段(DoCommit)时,可能协调者或网络出现问题,都有可能导致事务的部分参与者无法接收到协调者的指令(包括执行提交和中断事务),在这种情况下,部分参与者会在超时等待之后继续进行事务提交。有一定小概率会指定数据不一致的情况,所以这也是3PC协议的一大缺点。
154
154
155
155
156
156
0 commit comments