共计 1131 个字符,预计需要花费 3 分钟才能阅读完成。
TestBackup2B 剖析:
1.
0 | 1 | 2 | 3 | 4 |
---|
All add a log and commit l1 leader 0
0: <l1,1>
1: <l1,1>
2: <l1,1>
3: <l1,1>
4: <l1,1>
2.
2,3,4 offline
0,1 add a log but not commit
|0| 1|
| — | — |
0: <l1,1>, <l2,1>
1: <l1,1>, <l2,1> 2: <l1,1> 3: <l1,1> 4: <l1,1>
3.
0,1 offline
2,3,4 reconnect ,maybe leader 2 and leader’s term change ,add a log l3 and commit. leader 2
2 | 3 | 4 |
---|
0: <l1,1>, <l2,1> 1: <l1,1>, <l2,1>
2: <l1,1>, <l3,2>
3: <l1,1>, <l3,2>
4: <l1,1>, <l3,2>
4.
Disconnect a follower from 2,3,4, eg: 3
Then add a log l4
2 | 4 |
---|
0: <l1,1>, <l2,1> 1: <l1,1>, <l2,1>
2: <l1,1>, <l3,2>, <l4,2> 3: <l1,1>, <l3,2>
4: <l1,1>, <l3,2>, <l4,2>
5.
All disconnect ,and reconnect 0, 1 and a follower from step 4(server 3) ,
So now server 3 should be the leader (has last log),then term change .maybe 3
Server convert to candidate
Then add a log l5 (server 0 was leader from step 1)
0 | 1 | 3 |
---|
0: <l1,1>, <l2,1>
1: <l1,1>, <l2,1> 2: <l1,1>, <l3,2>, <l4,2>
3: <l1,1>, <l3,2>, <l5,3> 4: <l1,1>, <l3,2>, <l4,2>
Sync to server 0 and server 1
0: <l1,1>, <l3,2>, <l5,3>
1: <l1,1>, <l3,2>, <l5,3> 2: <l1,1>, <l3,2>, <l4,2>
3: <l1,1>, <l3,2>, <l5,3> 4: <l1,1>, <l3,2>, <l4,2>
6.
Then all start and add a log l6
Server should be the leader
0 | 1 | 2 | 3 | 4 |
---|
0: <l1,1>, <l3,2>, <l5,3>
1: <l1,1>, <l3,2>, <l5,3>
2: <l1,1>, <l3,2>, <l4,2>
3: <l1,1>, <l3,2>, <l5,3> ,<l6,3>
4: <l1,1>, <l3,2>, <l4,2>
Then sync log to others
本篇文章由一文多发平台 ArtiPub 主动公布