核心特性—高可用性与容灾

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 在生产环境部署数据库时,往往会搭建多个副本(Replica),保证数据库集群的高可用性以及数据的持久性。传统的部署方式是一主一备,即主备间通过日志同步数据变更。但是主备复制存在先天性缺陷,以常见的MySQL半同步复制为例,一旦网络延迟超出阈值,同步就会退化到异步复制。此时如果主节点宕机,副本可能丢失已提交的数据,也就是常说的副本不一致。

为了保证副本间的强一致性,现代数据库往往采用以Paxos为代表的多数派复制协议。Paxos通常要求集群中至少存在3个节点,每次写入都要获得超过半数节点的确认,即便其中1个节点宕机,集群也仍然能正常提供服务。Paxos算法能够保证副本间的强一致性,彻底解决副本不一致问题。

PolarDB-X在副本复制方面采用了X-Paxos。X-Paxos是阿里巴巴自研的Paxos协议实现,起源于AliSQL(阿里内部的MySQL分支)。基于朴素的Paxos实现,它在功能、性能上都做了大量优化,且经历了数十载的双十一考验,稳定可靠。p326300.pngX-Paxos实现了Multi-Paxos算法,通常有一个相对稳定的Leader节点用于处理读写请求。如果Leader节点因为某些意外情况发生宕机或超时,Follower节点就会重新发起选主投票,如果得到超过半数的选票则成为新的Leader。Logger节点只负责保存日志以及参与Paxos投票。Learner节点通常在只读实例中,它仅仅接受主机群的变更日志,不参与Paxos投票。

此外,X-Paxos还支持动态添加删除节点、权重化选主、Leader主动回切等企业级特性,允许用户根据业务需求灵活定义部署方式。

多机房部署

基于Paxos复制协议,PolarDB-X可以部署到多个机房中,以实现机房级容灾。常见的部署方式有同城三机房、两地三中心等,其中后者主要应用在混合云部署中。由于Paxos协议的特性,通常三个机房中有一个主机房负责对外提供服务。

跨地域多活

如果业务有多活需求,出于性能考虑,通常建议在不同地域分别部署PolarDB-X实例,彼此之间通过DTS等数据同步工具相连接。数据要根据实际业务需求做合理的分区,以保证各个地域的数据不会相互冲突。PolarDB-X全局变更日志特性支持实例到实例的数据同步。

相关实践学习
跟我学:如何一键安装部署 PolarDB-X
《PolarDB-X 动手实践》系列第一期,体验如何一键安装部署 PolarDB-X。
相关文章
|
1月前
|
SQL 运维 负载均衡
双活中心高效同步机制
双活中心高效同步机制
79 1
|
消息中间件 存储 SQL
跨系统数据一致性方案的思考(上)
本文主要意在总结沉淀现有问题解决经验过程,整理解决跨系统数据不一致问题的经验方法。 跨系统数据一致性,比较优秀的解决方案就是微服务化,不同应用系统采用统一数据源方式,这样可以有效避免数据一致性问题。 但是我们很多系统由于历史原因或者业务缘由,导致非服务化情况下,又要采取数据一致性方案。
跨系统数据一致性方案的思考(上)
|
负载均衡 关系型数据库 RDS
良好架构设计中的可靠性:高可用、容错、灾难恢复
良好架构设计支柱 云计算良好架构设计有五大支柱,分别是:安全性,可靠性,性能效率,成本优化和卓越操作。其中可靠性是指系统从基础设施或者服务故障当中实现恢复、以动态方式获取计算资源以满足需求,以及缓解配置错误或者暂时性网络问题等干扰因素的能力。
4243 0
|
10月前
|
存储 缓存 负载均衡
架构系列——架构师必备基础:单体、分布式、集群与冗余的区别
架构系列——架构师必备基础:单体、分布式、集群与冗余的区别
|
消息中间件 监控 容灾
容灾、扩展场景架构设计|学习笔记
快速学习容灾、扩展场景架构设计
90 0
容灾、扩展场景架构设计|学习笔记
【系统概念】容错、高可用和灾备
容错,高可用、灾备这三个词的使用环境极易被混淆。很多时候以为这三个词的意思是相同的。
221 0
【系统概念】容错、高可用和灾备
|
消息中间件 监控 算法
高可用怎么设计呢
《高可用》系列
145 0
高可用怎么设计呢
|
存储 消息中间件 缓存
分布式系统中数据存储方案实践
在项目研发的过程中,对于数据存储能力的依赖无处不在,项目初期,相比系统层面的组件选型与框架设计,由于数据体量不大,在存储管理方面通常容易被轻视,当项目发展进入到中后期阶段,系统的复杂性很大程度来源于数据层面;
268 0
分布式系统中数据存储方案实践
|
消息中间件 缓存 容灾
|
缓存 数据库 API
如何设计高可用系统之故障隔离
简单来说,当功能或性能不符合预期,就是故障。减少故障的方式有多种,包括系统优化、监控、风险扫描、链路分析、变更管控、故障注入演练、故障隔离等。故障隔离是其中一种手段,并且要求在系统设计时就需要考虑清楚。
2275 0