对话 | PolarDB for MySQL 云原生多主架构解读

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 RDS PostgreSQL,高可用版 2核4GB 50GB
云数据库 RDS SQL Server,独享型 2核4GB
简介: PolarDB for MySQL多主架构集群版的发布,实现了集群架构从一写多读到多写多读升级,以及写性能的横向扩展,让用户购买的资源得到了最大化的利用。

898989.jpg>>>

杨文锋(高见)

阿里云数据库高级产品专家,多年数据库相关运维和产品经验,现负责PolarDB for MySQL的产品管理、方案设计和特性规划工作。

>>>

章颖强(江疑)

阿里云数据库资深技术专家,PolarDB多主架构/Serverless/事务引擎研发负责人。

>>>

王林平(君远)

阿里云高级解决方案架构师,从事数据库运维、架构、售前工作16年,现负责泛互联网数据库解决方案工作。


点击查看完整对话视频



 高见:  PolarDB for MySQL是阿里巴巴自研的新一代云原生关系型数据,PolarDB集群版采用存储和计算分离的架构,集群中有一个主节点可读可写和至少一个只读节点。


随着PolarDB for MySQL引擎客户的不断增加,大规模头部客户不断涌入,部分头部客户业务体量规模庞大,使得目前PolarDB for MySQL引擎的一写多读架构在特定场景下,写性能出现瓶颈。


本次PolarDB for MySQL多主架构集群版的发布,实现了集群架构从一写多读到多写多读升级,以及写性能的横向扩展,让用户购买的资源得到了最大化的利用。


Q

高见:下面让我们来听一下市场的声音,客户在什么业务场景下遇到了哪些痛点,需要通过云原生的多主架构来解决?


 君远:  众所周知,PolarDB for MySQL以其100%兼容MySQL、高性能、高稳定性、高弹性、大存储、HTAP等优势能力,受到国内外数据库客户的青睐,在关系型数据库市场占据了重要的位置。


从在业务发展初期,数据量和并发访问量较小的情况下,客户利用PolarDB的写节点可以轻松满足各类业务数据的存储和读取。


随着业务发展,业务复杂度、数据量、并发访问量逐步增加,当前PolarDB规格已经不能满足业务需求情况下,客户需要升配PolarDB的写节点规格,来支撑数据量和并发访问量的快速增长。


此方案的优势是操作简单、业务无需改造、升配时间短;不足之处是写节点受限于本地服务器资源规格上限。


目前PolarDB单节点最大规格是88核710GB,如果客户业务上出现高并发、复杂读流量场景,读流量和写流量也会互相影响,导致业务受损。在这种业务场景下,很多客户需要增加读节点,利用读写分离提高系统的读承载能力,以确保客户支持更多的业务、更多数据、更多的访问量。


PolarDB为解决读节点延迟而读不到最新数据的问题,通过数据库代理提供最终一致性、会话一致性、全局一致性等多级读一致性能力,以满足客户在不同场景下对一致性级别的要求。


通过一写多读和读写分离一致性级别,PolarDB满足了大部分客户对数据库扩展性的需求。但是当客户希望横向扩展写能力、需要写隔离、支撑写业务的快速切换时,读写分离就有些力不从心,需要数据库能提供写扩展能力来满足业务需求。


不少客户在业务发展初期为开发降低开发成本和架构成本,以及部分to B客户为了产品输出、部署简单,采用多个业务模块存储在一套数据库的方式,PolarDB有不少客户就是这样的。


随着业务业务持续发展,数据量、访问量持续增加,不同业务模块的写特点也有可能不同,对数据库写TPS的诉求越来越高,会面临以下问题:


  • 各业务模块共同的并发写诉求单个写节点已经不能承载;
  • 在业务高峰期A业务的并发写可能会影响B业务的写入;
  • 写节点异常导致业务整体异常,无法及时恢复;
  • 通过垂直升配提高写容量的成本越来越高。


通过垂直升配、读写分离能解决部分写扩展问题,在性价比、稳定性、成本方面存在不少问题,客户更期待一个平滑扩展、高弹性、高稳定性、高性价比的数据库写扩展方案来支撑数据库写性能的横向扩展。


Q

高见:面对这些场景和痛点,PolarDB for MySQL的多主架构是如何解决的呢?


 江疑:  多主技术一直被誉为是数据库技术中皇冠上的明珠。早在云时代开始之前,能够实现多主写扩展技术的只有头部的两大商业数据库,其他开源数据库都无法做到这一点。这两大厂商也因此在数据库市场最核心的银行、金融、电信等领域占有垄断性的市场。


而其他商业或者开源数据库则主要以单主的一写多读形态存在,当需要写扩展的时候,往往通过购买多个单主数据库集群,并通过中间件或者ShareNothing的分布式数据库技术,将多个单写数据库分片聚合在一起,来实现写扩展。


云时代到来以后,各个头部云厂商都提供了云原生数据库的形态,PolarDB是国内第一个云原生数据库。云原生数据库在传统数据库的技术上和云的基础设施进行了融合,例如PolarDB通过和分布式存储PolarStore的融合,使得其在弹性、读扩展、存储容量上面有了大幅度的提升。


但是和云时代之前一样,云原生数据库在一开始还是难以突破多主技术的壁垒,当业务数据库增长达到单机上限瓶颈的时候,目前主流的方案还是只能通过多个单主集群拆分业务,中间件拆分数据,Share Nothing分布式数据库拆分数据等传统方案进行。


这些传统方案都存在如下的显著瓶颈:


  • 微观上都是通过拆分数据到多个单主集群/单主分片实现,当需要进行横向扩展是需要进行数据物理拆分和迁移,这种迁移非常的费时,有点类似传统数据库上扩只读节点那样需要迁移数据,并没有充分的利用云的基础设施的能力。同时拆分子业务和拆分数据分片的方案,难免都会遇到不同的业务/分片流量不均,或者短时间的分片流量突增,而由于分业务和分片只能通过迁移数据扩展,容易引发局部容量瓶颈导致的稳定性故障;
  • 当业务通过拆分到多个单主节点以后,如果需要进行全局的数据查询,业务往往需要一个额外的聚合库来进行聚合查询。这时就需要一个多链路的同步机制和一个额外的包含所有数据的大容量存储来支持。此时不单存储成本和容量都会直接翻倍,而且同步链路的延迟和稳定性也会让业务同学焦头烂额;
  • 由于传统的拆分子业务和拆分数据分片的方案,每个单主节点和分片都包含一部分数据,因此需要一个独立的备节点来解决这个节点的高可用问题,而这个备节点大部分情况下是浪费的,或者最多提供一些延迟读请求。

那么PolarDB for MySQL的多主架构是怎么来解决这些问题的呢?


PolarDB多主架构是基于第一代云原生架构的PolarDB一写多读架构实现的,是第一种实战的第二代云原生架构。他继承了一代云原生架构的存储和计算分离的技术,在大规模分布式存储的基础上实现了多个写节点共享同一份存储的多主技术突破,主要分为以下几点:


  • 使得一个数据库最大可以支持32个写节点,用户可以通过动态秒级的添加/删除写节点来实现横向弹性扩展,扩缩整个集群的读写能力,而无需干扰现有业务;
  • 用户可以秒级跨写节点迁移读写流量,来实现多个子业务和数据分片的读写均衡;
  • PolarDB多主架构在业内第一次实现了可以横跨多个主节点的全局RO功能。在不增加额外存储的同时,实现高效的汇聚查询,为用户解决了独立聚合库的大难题;
  • PolarDB多主架构实现了主主互备能力,每一个子业务/数据分片主节点都不需要在额外有一个备节点来实现高可用。当某一个主节点宕机时,多主架构通过动态选择其他低负载主节点接管宕机主节点流量,实现集群内再平衡。和云原生数据库相比,计算成本就直接降低到原来的1/2了;如果和自建/托管数据库相比,计算/存储成本均降为原来的1/2。


那么PolarDB for MySQL的多主架构是怎么突破的这个多主技术瓶颈的呢?


  • 难点一:没有一个的统一的分布式元数据管理系统。


多主架构支持库表及流量跨主节点切换,必然需要一套可以多点读写的分布式元数据体系,使得多个节点看到的库表结构均是完全一致的,并可以同时访问和修改。多主架构采用了PolarFusion技术,实现了在多个主节点上元数据的数据页的内存直接同步,实现了多节点强一致的分布式元数据体系,支撑了整个多主架构的秒级动态扩缩容,跨主节点秒级切流,本地DDL等功能,是整个多主架构的基石。


  • 难点二:秒级切换流量。


多主架构的多个核心优势均体现在跨主节点的流量秒切上面,而数据库的流量运行,不单需要访问数据存储本身,同时涉及到内存中缓存的数据页面,特别是脏页;涉及到多种必不可少的额外信息例如undo log,redo log,统计信息等等,这些信息都是耦合在一起的,并且各有各的不同点,需要在切流的时候针对其特点进行妥善的处理,来支撑秒级切流。


  • 难点三:一体化的事务系统。


多主架构下,跨越主节点的并发访问,在流量切换下的事务一致性,全局RO的事务定序,历史数据的有序purge都需要有一个分布式的事务系统来协调和处理这些在单机上很容易解决的问题。多主架构设计了跨越多个主节点的全局事务管理系统,解决所有集群维度的事务/流量协调。


 高见:  基于该架构的加持,多主架构集群版实现了三大技术优势:


1. 线性扩展


多主架构集群与标准的PolarDB集群版不同,标准集群版支持1个读写节点和最多15个只读节点,全部的写入操作指向唯一的读写节点,而多主架构集群版打破了这种限制,所有数据库实例节点都具备了读写的能力。根据阿里云实验室的测试数据,多主架构集群版随着节点的增加,集群整体并发读写能力得到了极大的提升,性能扩展可以说是线性提升。相对于友商的多主架构最大支持4节点扩展,PolarDB的多主架构集群版最多可支持32个节点同时写入,极限性能有了数倍提升,最大程度满足用户超高并发下的严苛性能要求。


2. 快速弹性


传统主备数据库架构下,增加节点需要全量复制数据,节点弹性的时间依赖数据量大小,从小时到天级不等,无法应对突增的业务性能要求。分表分库的分布式架构下,增加节点需要数据Re-Balance,迁移部分数据到新增的节点上,这个过程和数据量及新增节点数强相关,也需要花费较长时间提前规划维护窗口。PolarDB多主架构集群中所有读写节点共享同一份数据,增加节点做弹性扩展时,无需数据搬迁,5分钟生效,数据库跨节点动态调度,秒级完成切换,轻松应对不确定的业务增长。


3. 降低成本


传统数据库架构下,业务系统为了维持高可用,采用自建或者RDS数据库服务方式时,通常会选择主备架构。备节点无法提供服务或仅提供少量的读服务,造成资源闲置,成本高昂。PolarDB多主架构集群的节点间互为备份,故障场景下可以快速切换由其他节点接管业务,无需专门的备节点。相对于传统自建方式或者RDS的主备方式,可节省约一半的计算节点费用,存储费用也会相对减少。


有了这些优势,相信多主架构集群版可以为用户提供更优质更具性价比的数据库服务。


Q

高见:PolarDB for MySQL的多主架构集群版已经做了灰度发布,前面已经有很多重量级的客户进行了功能的试用,并且有部分客户已经将生产业务搬到了多主架构集群版上。那么客户真实的使用情况如何,能不能解决客户的问题,我们来听一下来自客户的反馈。

 君远:  在我服务的客户里有一类企业服务商客户,他们的业务特点和开发模式非常适合多主架构集群版。其中一个客户,业务上有一个基础平台系统和五六个核心业务系统。不同业务系统之间以及业务系统和基础平台之间有数据交互,他们云上的数据库架构是基础平台和业务系统的库做垂直拆分,采用这样的架构出于满足写扩展和写隔离的诉求,有十几个核心数据库实例,这些数据库之间由于业务侧需求,有跨库数据访问的诉求,通过数据复制工具进行不同数据库之间的数据复制,形成了复杂的级联复制链路,大大增加了维护数据库成本和维护成本,同时由于复制链路不稳定,当数据复制延迟是业务侧服务会一定程度上受损。


为解决这些问题,该客户提出用一套高规格、多实例数据库来承载基础平台系统和业务系统数据库的规划,来降低开发难度、降低输出数据库成本、降低部署难度、提高健壮性和稳定性。该需求的核心诉求是写扩展、写隔离、开发简单、跨数据库节点聚合查询数据。


首先,希望数据库方案支持写扩展和写隔离,能快速扩展写节点,同时支持写隔离用于隔离基础平台和业务系统的高并发写,以免在业务业务的高峰期出现写争抢以及出现A业务的写影响了B业务,在功能、性能、容量上满足各业务模块对并发写的诉求;其次,需要能支持不同数据库的跨节点数据库数据聚合查询,降低业务侧的开发难度;第三,如果其中一个数据库写节点出现异常,希望可以快速切换和恢复。


在客户提出这个需求的时候,我们也在规划多主架构集群版产品形态,基于客户的需求和客户进行了多轮共创。写扩展和写隔离是多主架构集群版核心能力,可以天然满足客户需求;跨数据库节点的数据聚合查询,我们在考虑多种实现方式以及方案交付及时性权衡后,提出用全局读节点来满足客户的跨数据库聚合查询的诉求,并且可以通过智能代理进行智能分流,不需要客户针对不同节点进行业务适配,客户在理解了我们的技术实现后表示可以满足业务需求。


对于数据库写节点异常快速切换的能力,我们提供了两个方案:

方案一:基于共享存储在不同写节点切换数据库;

方案二:提供备用standby节点进行高可用切换。


客户觉得第一个方案更适合他们的业务需求。至此多主架构集群版产品能力完美适配客户的业务需求,并在客户的预期时间点正式发布。


 江疑:  刚才我已经提到了PolarDB的多主架构在架构层面的技术突破,使得PolarDB完成了从一代云原生的一写多读架构到二代云原生的多写多读的多主架构转换。接下来我详细介绍下,多主架构的几个核心功能的技术内幕。


1. 主主互备


主主互备是多主架构的核心竞争力的技术点,在降本增效的大势下,如果我们能将计算和存储的成本直接减半,而不影响性能,这无疑有巨大的吸引力。那么主主互备就是这样的功能点。


主主互备打破了传统数据库甚至云原生数据库大规模数据集群形态想永远都是多个一主一备的架构,直接在不牺牲性能和高可用的前提下,裁剪掉了备节点,成本直接减半。那为什么只有PolarDB多主架构能做到呢?


最核心的就是多主架构下,多个主节点的存储是物理打通的,任何一个主节点,都可以同时作为其他主节点的备节点。这在单主架构下是无法实现的,这个架构突破给多主架构带来了巨大的成本优势。


当然主主互备有非常多的技术挑战:


  • 首先虽然多个主节点共享存储,但是大家都独立的redo log等,当一个主节点crash的时候,是需要recovery的,而不是能直接的切流到其他主节点,这时候我们需要其他主节点有在运行态帮助crash节点实现recovery的能力,而这个能力无论是工作量还是技术挑战都非常复杂,我们是云厂商中第一家拥有这个能力的数据库;
  • 其次主主互备中需要存活探测,流量探测,流量切换,流量再平衡等复杂流程,相对于原来的简单主备切换,需要有一个分布式的高可用管理系统,这个架构也是我们第一次在业内实现。


2. 全局只读节点


全局RO是PolarDB多主架构的另外一个核心创新点和优势点。在多主架构下,分布式共享存储上存储了多个主节点的所有数据,这给全局RO的实现提供了可能。在多主架构下,我们不再需要用多流和并的方式把多个单主小集群的数据汇聚到一个独立的汇聚库中,而天然存在一份包含所有数据的存储集群。当然全局RO同样存在多个核心功能挑战:

  • 多流物理复制:全局RO不是只要能访问到全局的存储数据就能实现,在访问数据的同时,全局RO同样需要感知到所有主节点最新的更新信息,并且在内存中对多个主节点的更新数据进行同步,这对于事务系统是一个巨大的挑战;
  • 分布式事务一致性读:多个主节点的修改,在同一个RO节点上如何定序,如何保证事务读的ACID,这都需要有一个分布式事务一致性读的机制,在主节点上进行事务写入的时候,就进行协调。

Q

高见:我们看到,多主架构集群版很好的解决了用户的扩展问题,非常适合用户将大量零散数据库进行聚合,相对于传统方式成本也有了大幅的降低。本次是多主架构集群版正式发布的第一个版本,产品功能还有很大的成长空间,后面也会不断的演进优化,那么产品研发团队近期主要是在做哪些方面的优化,主要的方向是哪些?


 江疑:  PolarDB多主架构集群版的演进思路有以下三个方面:


1. 多主架构未来需要加强的功能点:目前已经支持了主主互备,后续结合秒级切换的体系支持多主热备,做到无感高可用;在全局RO的基础上支持跨节点的订阅读,可以在一个主节点上读到其他主节点的数据;支持数据表透明分布,把一个表的多个分区分布放到多个RW上,然后来实现一个透明的写能力扩展,同时支持完整的ACID事务特性。

2. 多主架构和Serverless的融合,按需扩缩节点;

3. 多主架构实现行级多写的突破,PolarDB Cloud RAC。


 高见:  PolarDB for MySQL多主架构集群功能已经全面上线,可以在新购页面系列中选择“多主架构集群版”选择该功能,当前该功能已支持8.0以上内核版本。更多购买方法、使用说明请参见官网。


 / End /  

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7天前
|
Kubernetes Cloud Native 持续交付
云原生技术浪潮下的微服务架构实践
在数字化转型的今天,云原生技术成为推动企业IT革新的关键力量。本文将通过浅显易懂的语言和实际案例,带领读者了解云原生的核心概念、微服务架构的设计原则以及如何在云平台上高效部署和管理微服务。我们将从基础概念出发,逐步深入到微服务的生命周期管理,探讨如何在云原生生态中实现快速迭代和持续交付。无论你是云原生技术的初学者,还是希望深化理解的开发者,这篇文章都将为你提供有价值的指导和思考。
|
1天前
|
Cloud Native API 云计算
云原生架构:企业数字化转型的催化剂
【8月更文挑战第18天】在数字化浪潮不断推进的今天,云原生技术已成为推动企业IT转型的核心力量。通过深入探讨云原生架构的基本原理、优势以及实施策略,本文旨在为企业提供一个清晰的云原生应用路线图,帮助它们在竞争激烈的市场环境中获得灵活性和创新能力。文章将详细阐述云原生如何助力企业实现资源的最优配置,加速产品上市时间,并提高系统的可维护性和扩展性。
|
2天前
|
运维 Cloud Native 云计算
探索云原生架构的未来趋势与挑战
【8月更文挑战第17天】随着云计算技术的不断发展和成熟,云原生架构已经成为现代软件开发的重要趋势。本文将深入探讨云原生架构的核心概念、优势以及面临的未来挑战和发展趋势,旨在为读者提供一个全面了解云原生架构的窗口,同时展望其对未来软件开发模式的影响。
|
7天前
|
Cloud Native 持续交付 开发者
云原生之旅:从传统到现代的架构演化
本文将通过一次虚拟的旅行,带领读者穿越回过去,探索软件架构的发展脉络。我们将从单体应用开始,一路经过服务化拆分,最终抵达云原生的乐土。这不仅是一段技术演进的历史,也是对如何在不断变化的技术浪潮中保持初心与创新的启示录。
18 2
|
8天前
|
运维 Cloud Native Devops
云原生架构:企业数字化转型的加速器
【8月更文挑战第11天】在数字化浪潮中,企业正经历前所未有的转型压力。云原生架构作为一种新型的IT架构模式,以其灵活性、可扩展性和高效性成为企业应对这一挑战的关键工具。本文将深入探讨云原生架构的核心概念、优势以及它如何助力企业实现敏捷开发、自动化运维和微服务治理,最终加速企业的数字化转型之旅。
20 3
|
7天前
|
运维 Cloud Native 持续交付
云原生时代的微服务架构演进
【8月更文挑战第12天】在数字化转型的浪潮中,企业级应用正逐渐从传统的单体架构向微服务架构转变。本文将探讨微服务架构的概念、优势以及在云原生环境下的演进路径,同时分析微服务实施过程中面临的挑战和解决策略。通过深入讨论微服务与容器化技术的结合,文章旨在为读者提供一种现代化的应用开发和部署范式。
|
8天前
|
运维 监控 Cloud Native
云原生时代下的微服务架构演进
在数字化的浪潮中,云原生技术如同一艘承载梦想的巨轮,带领企业驶向灵活、高效的未来。本文将深入浅出地探讨微服务架构如何在云原生的大背景下不断演进,从传统的单体应用到现代化的服务网格,每一步的变革都是对技术挑战的回应和对未来趋势的拥抱。通过具体案例分析,我们将一窥微服务与容器化、自动化运维等云原生概念的融合之美,以及这一进程如何为企业带来前所未有的敏捷性和创新能力。
|
9天前
|
Kubernetes Cloud Native 持续交付
探索云原生架构:企业数字化转型的催化剂
【8月更文挑战第10天】随着技术不断进步,云原生架构作为推动企业数字化转型的关键力量,正逐渐成为行业焦点。本文将深入剖析云原生的核心理念、关键组件及其在现代业务中的应用,探讨云原生如何助力企业实现敏捷开发、自动化部署与弹性扩展,从而加速创新并提升竞争力。
12 2
|
3天前
|
Cloud Native 安全 云计算
云原生技术的未来:探索服务网格和无服务器架构
随着企业数字化转型的深入,云计算已成为推动业务创新的核心力量。本文将深入探讨云原生技术的最新发展趋势,重点分析服务网格和无服务器架构如何重塑云计算的未来。通过实际案例和技术解析,揭示这些前沿技术如何解决现代应用部署的复杂性,提高系统的可伸缩性和弹性。文章旨在为读者提供云原生领域的深度见解,并激发对云技术未来发展的思考。
12 0
|
3天前
|
运维 监控 Cloud Native
云原生架构:企业数字化转型的催化剂
【8月更文挑战第16天】在数字化浪潮中,云原生架构如同一股不可阻挡的力量,正在推动企业IT架构的根本性变革。本文将探讨云原生的核心概念、优势以及它如何成为企业数字化转型的关键因素。我们将深入了解云原生技术如何助力企业构建更加灵活、可扩展的系统,并分析云原生对企业运维模式的影响,同时指出企业在采纳云原生架构时可能遇到的挑战及应对策略。
7 0

相关产品

  • 云数据库 RDS MySQL 版
  • 云原生数据库 PolarDB