@@ -106,51 +106,51 @@ The Dynamic Two-phase Commit Protocol (动态两阶段提交,D2PC,d2pc,Dyn
106106
107107事务中的协调者在收到各个参与者反馈后,做出判断,出现以下两种情况:
108108
109- ** 1、 ** 如果事务中的所有参与者都表示可以提交事务,则做执行 ** 事务预提交**
109+ ** 1. ** 如果事务中的所有参与者都表示可以提交事务,则做执行 ** 事务预提交**
110110
111- ** ⑴、 发送预提交请求: ** 事务中的协调者向各个参与者发送预提交(PreCommit)指令,并进入已准备(prepared)状态;
111+ ** 1.1. 发送预提交请求** : 事务中的协调者向各个参与者发送预提交(PreCommit)指令,并进入已准备(prepared)状态;
112112
113- ** ⑵、 事务预提交: ** 事务中的参与者接受到协调者的预提交(PreCommit)指令,会执行事务操作,并将undo和redo信息记录到事务日志中。(undo和redo分别表示撤销和恢复);
113+ ** 1.2. 事务预提交** : 事务中的参与者接受到协调者的预提交(PreCommit)指令,会执行事务操作,并将undo和redo信息记录到事务日志中。(undo和redo分别表示撤销和恢复);
114114
115- ** ⑶、 反馈事务预提交的结果: ** 在参与者成功的执行了事务操作,并向协调者返回ACK响应,如果协调者出现故障,那么参与者将不断的重试发送ACK。之后开始等待最终事务提交指令。
115+ ** 1.3. 反馈事务预提交的结果** : 在参与者成功的执行了事务操作,并向协调者返回ACK响应,如果协调者出现故障,那么参与者将不断的重试发送ACK。之后开始等待最终事务提交指令。
116116
117- ** 2、 ** 如果其中之一的参与者表示不能提交事务或超时反馈,则做 ** 中断事务** 处理
117+ ** 2. ** 如果其中之一的参与者表示不能提交事务或超时反馈,则做 ** 中断事务** 处理
118118
119- ** ⑴、 发送中断事务指令: ** 事务中的协调者向各个参与者发送中断指令(abort);
119+ ** 2.1. 发送中断事务指令** : 事务中的协调者向各个参与者发送中断指令(abort);
120120
121- ** ⑵、 中断事务: ** 各个参与者就收到中断指令或超时未收到任何指令时,会做中断事务处理。
121+ ** 2.2. 中断事务** : 各个参与者就收到中断指令或超时未收到任何指令时,会做中断事务处理。
122122
123123
124124
125125#### 阶段三:执行提交阶段(DoCommit):
126126
127127事务中的协调者在先接收各个参与者的反馈,然后做出判断,也会出现以下两种情况:
128128
129- ** 1、 ** 如果事务中的参与者成功执行的预提交事务操作,并返回成功ACK,则 ** 执行事务提交** :
129+ ** 1. ** 如果事务中的参与者成功执行的预提交事务操作,并返回成功ACK,则 ** 执行事务提交** :
130130
131- ** ⑴、 发送执行事务提交指令: ** 事务协调者发送执行事务提交指令给各个参与者;
131+ ** 1.1. 发送执行事务提交指令** : 事务协调者发送执行事务提交指令给各个参与者;
132132
133- ** ⑵、 事务提交: ** 各个参与者收到协调者发送的执行事务提交的指令,然后执行事务提交;
133+ ** 1.2. 事务提交** : 各个参与者收到协调者发送的执行事务提交的指令,然后执行事务提交;
134134
135- ** ⑶、 反馈事务提交结果: ** 各个参与者执行完事务提交操作后,反馈结果给事务协调者;
135+ ** 1.3. 反馈事务提交结果** : 各个参与者执行完事务提交操作后,反馈结果给事务协调者;
136136
137- ** ⑷、 完成事务: ** 协调者接收到各个参与者执行提交的反馈,事务完成。
137+ ** 1.4. 完成事务** : 协调者接收到各个参与者执行提交的反馈,事务完成。
138138
139139
140140
141- ** 2、 ** 如果事务中的参与者执行预提交事务操作失败或超时反馈,则 ** 中断事务** :
141+ ** 2. ** 如果事务中的参与者执行预提交事务操作失败或超时反馈,则 ** 中断事务** :
142142
143- ** ⑴、 发送中断事务指令: ** 事务中的协调者向各个参与者发送中断指令(abort);
143+ ** 1.1. 发送中断事务指令** : 事务中的协调者向各个参与者发送中断指令(abort);
144144
145- ** ⑵、 事务回滚: ** 各个参与者收到协调者发送的执行事务回滚的指令,然后执行事务回滚;
145+ ** 1.2. 事务回滚** : 各个参与者收到协调者发送的执行事务回滚的指令,然后执行事务回滚;
146146
147- ** ⑶、 反馈事务回滚结果: ** 各个参与者执行完事务回滚操作后,反馈结果给事务协调者;
147+ ** 1.3. 反馈事务回滚结果** : 各个参与者执行完事务回滚操作后,反馈结果给事务协调者;
148148
149- ** ⑷、 中断事务: ** 协调者接收到各个参与者执行回滚的反馈,事务中断。
149+ ** 1.4. 中断事务** : 协调者接收到各个参与者执行回滚的反馈,事务中断。
150150
151151
152152
153- ** 说明: ** 执行提交阶段(DoCommit)时,可能协调者或网络出现问题,都有可能导致事务的部分参与者无法接收到协调者的指令(包括执行提交和中断事务),在这种情况下,部分参与者会在超时等待之后继续进行事务提交。有一定小概率会指定数据不一致的情况,所以这也是3PC协议的一大缺点。
153+ ** 说明** : 执行提交阶段(DoCommit)时,可能协调者或网络出现问题,都有可能导致事务的部分参与者无法接收到协调者的指令(包括执行提交和中断事务),在这种情况下,部分参与者会在超时等待之后继续进行事务提交。有一定小概率会指定数据不一致的情况,所以这也是3PC协议的一大缺点。
154154
155155
156156
0 commit comments