为了保证副本之间的强一致性,现代数据库往往采用以Paxos为代表的多数复制协议。 Paxos 通常需要集群中至少有 3 个节点,并且每次写入都必须经过半数以上的节点确认。即使其中一个节点宕机,集群仍然可以正常提供服务。 Paxos算法可以保证副本之间的强一致性,彻底解决副本不一致的问题。 PolarDB-X 使用 X-Paxos 进行副本复制。 X-Paxos是阿里巴巴自研的Paxos协议的实现,源于AliSQL(阿里巴巴内部mysql分支)。基于Paxos的简单实现,在功能和性能上做了大量优化,历经数十年双十一考验,稳定可靠。
Paxos 实现了 Multi-Paxos 算法,通常有一个比较稳定的 Leader 节点来处理读写请求。如果Leader节点因为一些意外情况宕机或者超时,Follower节点会重新发起Leader的选举,如果获得过半票,就会成为新的Leader。 Logger 节点只负责保存日志和参与 Paxos 投票。 Learner 节点通常处于只读实例中。只接受宿主组的变更日志,不参与Paxos投票。 此外,X-Paxos还支持节点的动态增删、加权leader选择、leader主动回退等企业级特性,让用户可以根据业务需求灵活定义部署方式。 1.多机房部署 基于Paxos复制协议,PolarDB-X可以部署在多个机房,实现机房级容灾。常见的部署方式有同城三机房、两地三中心等,后者主要用于混合云部署。由于Paxos协议的特性,通常三个机房之一负责对外提供服务。 2.跨地区的多元活动 如果业务需要更多的活动,出于性能考虑,通常建议将PolarDB-X实例部署在不同的区域,并通过DTS等数据同步工具相互连接。应根据实际业务需求对数据进行合理分区,保证各区域的数据不会相互冲突。
PolarDB-X 全局变更日志功能支持实例间数据同步。
转载请注明:小猪云服务器租用推荐 » 高可用性与容灾