当一个事务请求得到过半 follower 的 ACK 响应时,leader 会下发 commit 消息给 learner,leader 自身也会 commit,然后其实就是各个角色进入 CommitProcessor-》 FinalRequestProcessor,然后去执行事务刷新到内存,这个操作的话,肯定会存在部分失败,部分失败,那 leader 失败或者 learner 失败了,就会出现数据不一致的情况,这该怎么办?希望有大佬给点提示,感激不尽
1
Miiiz OP 有没有大佬解答一下呢
|
2
pifuant 2018-12-07 17:09:52 +08:00
建议先熟悉下 共识算法 paxos
简单来说, 一个操作, 只要被 majority 接受了, 就表示成功了, 这时只要保证 majority 存活, 无论 leader 还是 follower 挂了, 都不会影响结果 |
3
JasonLaw 2022-05-27 22:58:50 +08:00
建议看一下 &list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB&index=6 和 &list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB&index=7 ,还有 https://raft.github.io/raft.pdf
|