问: MySQL Group Replication,简称MGR,基于paxos协议,能保证强一致性吗?或者说paxos能保证强一致性吗?
答: MGR基于Paxos协议,多个节点之间强同步的高可用方案,但多个节点的强一致性是保证了最终一致性,在平常的各节点复制中还是异步的。
引申:
1 MGR一致性读
MySQL Group Replication中的一致性读:https://www.modb.pro/db/100467
2 Polardb强一致性
云原生分布式数据库PolarDB-X介绍:https://help.aliyun.com/document_detail/311498.html
PolarDB-X始终保持对阿里巴巴集团“双十一购物狂欢节”所有相关业务的全面支撑。历经十余年淬炼,PolarDB-X具备了强数据一致性、高系统稳定性、快速集群弹性等核心关键特性,并在司法财税、交通物流、电力能源等公共事业领域有广泛深入应用。高性能强一致分布式事务,PolarDB-X采用自研X-Paxos协议,保证数据存储在故障切换过程中RPO=0的基础上,使用TSO策略和分布式的MVCC能力保证了分布式事务的隔离性和一致性。分布式线性扩展,PolarDB-X基于一致性Hash的分区策略,有效的进行负载均衡和热点抑制,且在扩展过程中保持计算下推和数据一致性的同时实现业务零感知,并行和流控能力为扩展期间业务连续性提供了有力保障。全局Binlog和全局一致性备份,分别解决分布式数据库各节点数据库向下游流转的难题及各节点备份时间差造成的恢复一致性问题。
3 Polardb高可用和容灾
高可用性与容灾:https://help.aliyun.com/document_detail/311502.html
为了保证副本间的强一致性,现代数据库往往采用以Paxos为代表的多数派复制协议。Paxos通常要求集群中至少存在3个节点,每次写入都要获得超过半数节点的确认,即便其中1个节点宕机,集群也仍然能正常提供服务。Paxos算法能够保证副本间的强一致性,彻底解决副本不一致问题。
PolarDB-X在副本复制方面采用了X-Paxos。X-Paxos是阿里巴巴自研的Paxos协议实现,起源于AliSQL(阿里内部的MySQL分支)。基于朴素的Paxos实现,它在功能、性能上都做了大量优化,且经历了数十载的双十一考验,稳定可靠。这个说法印证了上面问题中MGR的一致性,因为MGR基于paxos协议,所以可以保证副本/节点间的强一致性;但是没有解决副本/节点复制方面的强一致性。

X-Paxos实现了Multi-Paxos算法,通常有一个相对稳定的Leader节点用于处理读写请求。如果Leader节点因为某些意外情况发生宕机或超时,Follower节点就会重新发起选主投票,如果得到超过半数的选票则成为新的Leader节点。Logger节点只负责保存日志以及参与Paxos投票。Learner节点通常在只读实例中,它仅仅接受主机群的变更日志,不参与Paxos投票。
此外,X-Paxos还支持动态添加删除节点、权重化选主、Leader主动回切等企业级特性,允许用户根据业务需求灵活定义部署方式。5 PolarDB-X的技术架构及优势
PolarDB-X的技术架构及优势:https://help.aliyun.com/document_detail/316639.html
存储节点 (Data Node,DN),主要提供数据存储引擎,基于多数派Paxos共识协议提供高可靠存储、分布式事务的MVCC多版本存储,另外提供计算下推能力满足分布式的计算下推要求(比如Project/Filter/Join/Agg等下推计算),可支持本地盘和共享存储。
6 Paxos,Raft,Zab一致性协议
Paxos,Raft,Zab一致性协议-Raft篇:https://www.modb.pro/db/323378
官网:https://raft.github.io/
Paxos,Raft,Zab一致性协议-Paxos篇:https://www.modb.pro/db/323377
几个协议对比:https://www.modb.pro/db/447571
7 数据库高可用常见协议
| 项目 | 协议 | 原理 |
|---|---|---|
| mgr | paxos协议 | |
| PolarDB-X | X-Paxos实现了Multi-Paxos算法 | |
| redis哨兵 | 主节点故障,通过raft协议选出 领头Sentine | max(quorum,num(sentine)/2+1) |
| redis cluster | 节点通信用的gossip协议 | 流言 |
| zookeeper | Zookeeper Atomic Broadcast(ZAB,Zookeeper原子消息广播协议) | ZAB 协议两种模式:消息广播和崩溃恢复。 |
redis sentinel 使用的是raft 协议, cluster 是Gossip协议。
1.这里所说的内容是 redis的sentinel 还是 cluseter
sentinel 使用的是raft 协议, cluster 是Gossip协议。
2.redis哨兵模式下,sentinel配置里记录了主节点信息的。加从库也没有用的,除非是主节点故障出现的时候
才会通过raft协议选举。
3.redis选举中有 投票数的概念使用奇数。从节点向sentinel集群的每一个节点发送求票信息,希望能选举自己成为master,每一个sentinel只能投一次票,最终必然有一个节点成为新的master。gossip协议阿里云介绍:https://developer.aliyun.com/article/680237




