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

本文涉及的产品
云原生数据库 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开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
负载均衡 关系型数据库 RDS
良好架构设计中的可靠性:高可用、容错、灾难恢复
良好架构设计支柱 云计算良好架构设计有五大支柱,分别是:安全性,可靠性,性能效率,成本优化和卓越操作。其中可靠性是指系统从基础设施或者服务故障当中实现恢复、以动态方式获取计算资源以满足需求,以及缓解配置错误或者暂时性网络问题等干扰因素的能力。
4861 0
|
2月前
|
负载均衡 Dubbo 算法
集群容错架构设计
集群容错架构设计
37 1
集群容错架构设计
|
2月前
|
运维 监控 测试技术
如何确保微服务架构的高可用性?
如何确保微服务架构的高可用性?
74 2
|
6月前
|
存储 运维 监控
如何设计高可用的分布式系统
【7月更文挑战第29天】设计高可用的分布式系统是一个复杂而细致的过程,需要从架构设计、冗余策略、故障转移与恢复、监控与告警等多个方面综合考虑。通过采用微服务架构、无状态服务、负载均衡、数据冗余、服务冗余、跨地域部署等策略,可以显著提高系统的可用性和可靠性。同时,建立完善的监控和告警体系,确保对系统的任何变化都能及时感知和处理。最终,通过不断的优化和改进,实现系统的高可用性目标。
|
6月前
|
存储 监控 负载均衡
中间件容错设计
【7月更文挑战第20天】
67 2
|
6月前
|
弹性计算 运维 负载均衡
构建高可用性的分布式系统:技术与策略
【7月更文挑战第1天】构建高可用分布式系统涉及负载均衡、容错处理和数据一致性等关键技术,遵循冗余、模块化及异步设计原则,并通过监控告警、自动化运维和弹性伸缩策略确保稳定性。
|
6月前
|
运维 负载均衡 监控
如何设计一个高可用的分布式系统?
如何设计一个高可用的分布式系统?
|
存储 消息中间件 运维
高可用架构和系统设计思想
本文从研发规范层面、应用服务层面、存储层面、产品层面、运维部署层面、异常应急层面这六大层面去剖析一个高可用的系统需要有哪些关键的设计和考虑
|
存储 缓存 负载均衡
架构系列——架构师必备基础:单体、分布式、集群与冗余的区别
架构系列——架构师必备基础:单体、分布式、集群与冗余的区别
|
SQL 监控 Oracle
高可用的本质
无论是一个域,一个BG,还是一个站点,虽然范围有大有小,对象有所不同,但其高可用的理念都是相通的,今天将自己对高可用的一点点思考以及总结的【nPRT公式】分享给大家。
高可用的本质