既然 mysql 可以靠 binlog 达成多副本共识,那为什么还需要 Paxos、Raft 等共识算法?

查看 42|回复 3
作者:xiyy02   
RT ,最近在看 Paxos 、Raft 等共识算法,Paxos 没怎么看明白,Raft 看了整个流程,相较于 Paxos 好理解许多;
有些疑问想要请教下 V 友们:
我了解过 mysql 的副本同步机制,mysql 通过 binlog 来完成副本同步,为了保证 redolog 和 binlog 不发生一致性问题,还专门做了两段式提交:
阶段一:主库写 redolog 但不提交;
阶段二:主库写 binlog ,然后标记相关 redolog 为提交状态
当且仅当 binlog 写成功时,redolog 里相关改动才算提交,这样可以保证多副本最终一定会按照 binlog 可靠的达成共识(一致?)
在这个过程中,mysql 既没有实现 Paxos ,也没有依赖 Raft ,最终还是达成了多副本的共识(一致?),那为什么还专门提出来 Paxos 这类复杂的共识算法来完成多副本一致性呢?
PS:在此期间还看到有人纠正:共识和一致不是一回事;但我理解共识算法的目的也是为了多副本就一份数据达成一致吧?所以一致性还是最终的目的,总之我被绕晕了😭

binlog, paxos, redolog, 副本

verrickt   
我只看过 raft ,mysql 不太了解。
我觉得可能比较关键的点是,提供了什么样的一致性。
比如 raft 提供了线性一致性保证( linearizability ),mysql 是否提供了相同的一致性,或是说只是提供了一个很模糊的最终一致性( eventual consistency )?
另外提一点,这里的一致性指多个 replica 之间读写的一些保证,与事务( ACID )里的一致性是不同的概念
verrickt   
共识和一致确实不是同一回事。lz 可以看看 design data intensive application 这本书,里面有专门的章节介绍一致性( consistency )和共识( consensus )
https://dataintensive.net/
liprais   
binlog 达成不了强一致性
您需要登录后才可以回帖 登录 | 立即注册

返回顶部