RDS MySQL 云原生架构实践

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 作者:王颜培(感仰)内容简要:一、阿里云RDS MySQL简介二、云原生架构之路三、后续规划

一、阿里云RDS MySQL简介


一)简介


阿里云RDS MySQL是阿里云数据库产品核心产品,也是全球最受欢迎的开源数据库之一。阿里云RDS MySQL在集团内支撑核心电商交易以及数十个不同BU的业务。另一方面在公共云作为一款商业化PaaS产品,支撑阿里巴巴之外的各个公司的业务体系。同时也作为一款专有云的产品,输出到不同企业平台。


图片 1.png


可以用三个词来形容阿里云RDS MySQL。


第一个是我们的用户群体非常庞大。在数据库的产品生态中,阿里云RDS MySQL的实例数和用户数是最多的。


第二个是我们经过多年的发展,打造了丰富的企业级能力。比如弹性能力,用户可以按需计费地存储或计算,还有很多丰富的运维能力,如备份、恢复、切换、监控、告警等。同时我们还有全链路安全加密,如SSL、云盘加密、白名单等。除此之外我们还有智能化加持,能够帮用户做诊断分析,还能自诊断、自优化。


第三个是我们提供了多种部署架构,最经典的是主备架构,我们还支持同城容灾的跨可用区架构。并且也支持MySQL三节点。三节点内核形态可实现RPO为0,能够做到不丢数据,并且其中的Log节点它不存数据,只做回放日志。


(二)阿里云RDS MySQL整体架构

例:MySQL三节点架构


做完简单的产品介绍之后,接下来大概介绍一下我们的整体架构,这里以刚才提到的MySQL三节点架构为例。


图片 2.png


如上图所示,MySQL三节点包括主备节点和日志,我们放到了三个不同的可用区里,三个节点之间通过日志方式同步数据。因为Log节点不存数据,所以我们用的是很小的规格,这样能够减少很多成本。


同时,在这三个节点之间,主节点上面会挂一个SLB,一方面是让用户ECS通过访问SLB然后访问主节点,同时SLB也能够让线下以及自建的用户访问到云上的数据库。


在整个RDS实例里,我们基于OSS打造了全量加增量的数据备份,能够帮助用户做数据的克隆、恢复,包括按时间点恢复,按备份集恢复,除此之外还有审计以及监控。集成的所有能力通过Open API,一方面是用户能够集成我们的产品能力,另一方面是用户可以通过控制台操作整个RDS产品。



二、云原生架构之路


(一)云原生架构之路 - 架构演进


在向云原生架构的演进到的过程中,我们也是一代代地进行迭代。


图片 3.png

第一代是物理机时代,我们底下都是物理机,然后物理机上放多个实例,并且是多租户的,每个实例之间用cgroup做隔离。


后边逐渐演进到容器化架构,因为我们发现有个痛点,就是大量的物理机资源需要维护,我们花费了很大的精力投入到资源维护上。因此,我们把资源交给ECS团队去维护,我们只需要关心PaaS层的东西。同时我们构建基于Docker容器化的基础设施,保证MySQL能够标准化交付、运维。


如今,我们开始探索云原生,基于Docker和K8s的容器化标准方式,去支持现在MySQL业务。


(二)云原生架构之路-整体策略


为什么要往云原生方向演进?这里简单说一下我们的想法。


图片 4.png


先从底层来看,云有整个资源池化、弹性的能力。同时,云还有很多不同的产品能力,因为现在整个企业都在向在线化和数字化不断地转型,阿里云的基础设施也在飞速演进,推出了很多云的产品,不仅有ECS、云盘、VPC,还有DBFS、ECI、ACK等很多基础设施。


为了能够让我们的RDS产品更好地发展,更快地迭代,让我们更充分地使用云的能力,所以我们需要跟基础设施层做解耦,让我们关注在PaaS层的建设,通过系统的扩展性进行升级,让系统扩展性更强。同时,我们在产品上能够更专注,给到用户更好的体验,实现更好的稳定性。

 

(三)云原生架构之路 - 演进的障碍和收益


MySQL积极拥抱云原生这个大势才能获得更好的发展。


接下来介绍一下我们演进的障碍跟收益。


图片 5.png


上图一个是本地盘的形态,也就是刚才提到的物理机时代,另一个是基于ECS、Docker的云盘形态。这两个架构有很大的痛点,就是如果我们要开发一个功能,需要通过本地盘实现一遍,然后再通过云盘实现一遍。同时,这对我们的人力有很大的浪费,而且需要维护相关资源。


图片 6.png


在我们演进到云原生架构之后,引入K8s作为统一的接入层。K8s能够把整个IaaS资源做抽象,抽象成Node/Pod/Pvc等不同的资源模型,并且它提供了标准化的接口,能让上层的PaaS平台统一化、标准化进行调用。


这带来的好处是什么?


一个是整个IaaS层的资源能够不断演进,比如引进ECI这样的弹性能力,我们也能把ECS替换成ECI,或者底下的存储替换成别的存储,不需要再依赖于底下不同资源的演进而改变我们上层的架构。


同样,上层的PaaS跟底下的资源层解耦之后,上层也能更专注地打造PaaS化的平台能力。在这层架构上解决的问题是代码只需要写一份,就能跑在本地盘和云盘上,或者跑在以后更新的形态上,而且统一通过K8s的方式进行管控和运维的话,我们的人力成本也大幅降低。


(四)云原生架构之路 - DSL配置式DB编排体系


基于K8S平台的DB集群调度平台。


通过K8s对整个资源层做了抽象之后,解决了IaaS层资源抽象的逻辑。


其实对于IaaS抽象还有一步没做,对于数据库来说,它有很多自己的业务特性,比如需要备份,需要有不同的内核,需要有自己的运营逻辑。


因此我们基于数据库的业务,在K8s上面再做了一层业务抽象,自己去定义了一套DSL模型,这样不仅保证了MySQL不同的业务,还保证了像Mongo、Redis、PostgresSQL等不同引擎,通过这套模型能够快速接入到K8s架构中。


图片 7.png


(五)云原生架构之路-DSL配置式DB编排体系


MySQL三节点 DSL实例化举例


接下来简单介绍一下DSL的大概逻辑。


图片 8.png

 

还是以刚才MySQL的三节点为例。在最上层,用户看到的是一个MySQL的实例,下面有三个计算的节点,Leader对应Master,Follower对应Slave,Logger对应日志。


存储节点无论是云盘还是本地盘,我们将最上层的实例抽象成了一个ReplicaSet,将计算节点抽象成了一个Replica,Replica无论指定多少个都可以,并且可以指定每个Replica分布到哪个可用区里面,包括规格之类。


同时,我们将这层模型绑定DSL,DSL描述的内容包括挂盘的方式,假如挂的是云盘,挂在容器里面怎么挂,如果是本地盘的话,把本地盘的目录挂到容器里面又该怎么挂,并且整个资源申请完之后,最后需要用什么样的方式做备份,或者说用什么样的方式拉起,这些内容都是跟整个数据库业务相关的。


当这些内容抽象完出现一个DSL之后,提交给业务中台,业务中台去做整个资源申请,类似于底座K8s Apply的资源模型一样,并且后面去完成整个实现的生产以及后面的运维。


(六)云原生架构之路 - 核心组件交互架构

 

图片 9.png


上图是基于K8s的管控架构图。


这个架构里有几个特点,一个是分层的架构设计,另外每个模块里面有很多主键,每个模块主键之间是以微服务化的方式交互。此外我们也实现了一套编排式的工作流,通过这种方式能够更大地提高运维以及开发的效率。


(七)云原生架构之路 - 资源池化和云原生


资源在线+离线智能化调度


我们在资源调度层做了在线跟离线一体化的调度逻辑。

 

图片 10.png


如上图所示,这里面有几个特性。一个是我们面向稳定性做了一些调度,例如一个主机上或者一个Load上资源的负载,本地盘需要做磁盘降载,对于本地盘,主机上可能需要做下线,这些都是通过主动运维调度打散的方式完成,我们把它们调度到其他安全的机器上,从而保证实例的稳定性。


第二个是面向成本的调度,我们在做调度的时候会考虑资源优化、成本优化。比如,我们会让CPU售卖率与内存售卖率达到一定的预期,会做资源的压缩,或者说对资源碎片做整理,让我们的成本做得更优。成本降低之后,我们能够给到客户的价格会更低。


第三个是面向大促场景的调度,举个例子,我们在支持阿里核心电商的数据库集群双11前,需要将数据库集群通过弹性调度的方式让整个集群达到大促态,来备战双11,双11结束后,又会将整个集群的调度为“紧凑型”,回到日常态。

 

(八)云原生架构之路 - 规模化弹性案例


打造规模化弹性产品能力 – 助力双11完成“大促态”准备

 

图片 11.png


平时整个集团的数据库集群负载是比较低的,为了让核心交易链路能够快速达到“大促态”,我们通过离线调度的方式将核心数据库的集群变成均衡性的策略,让它们完成大促态的准备,扛过双11的峰值。


(九)云原生架构之路 - 不同存储架构选型


适合不同负载场景的“IO性能&弹性”组合

 

图片 12.png

上文提到我们不仅支持本地盘,而且支持云盘,两个不同的形态各有特点。


本地盘在IO上的性能天生就非常高,IO能力会更强,但是本地盘有一个很大的缺陷是当用户需要扩容或变配的时候,假设本地的资源不够,就要去搬数据,如果量很大的话,时间成本会非常高,因此本地盘的弹性能力相对来说更弱一些。


云盘上的优势是什么?第一是它在变配的时候,计算存储节点是完全做分离的,计算节点可以直接扩,我们先停备再做一次切换,然后再去扩充。扩计算节点的话,我们会把备节点先扩掉,然后做一次切换,然后到主。如果是存储节点的话,先把备库扩完之后再扩主库,相当于它具备分钟级的弹性能力。


我们在做规模化弹性能力的话,都是基于计算存储分离架构完成的。



三、后续规划


持续不断探索云原生,通过技术演进来赋能业务。


图片 13.png


对于后续规划,我们会在云原生方向不断探索,主要包含两点。


一是需要更极致的弹性,上文提到我们现在做计算节点扩容的时候,还是需要对计算节点停服,后续我们会让计算资源实现热扩容,并且能够在上面做Serverless on RDS的产品形态。


另一方面,在云原生之后我们会去嫁接智能化,让RDS更智能地帮助我们的业务开发,提升数据库的异常自定位,以及让数据库拥有更好的自治能力。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
1月前
|
运维 监控 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
国诚投顾携手阿里云,依托Serverless架构实现技术全面升级,构建高弹性、智能化技术底座,提升业务稳定性与运行效率。通过云原生API网关、微服务治理与智能监控,实现流量精细化管理与系统可观测性增强,打造安全、敏捷的智能投顾平台,助力行业数字化变革。
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
|
1月前
|
存储 SQL 关系型数据库
RDS DuckDB技术解析一:当 MySQL遇见列式存储引擎
RDS MySQL DuckDB分析实例以​列式存储与向量化计算​为核心,实现​复杂分析查询性能百倍跃升​,为企业在海量数据规模场景下提供​实时分析能力​,加速企业数据驱动型决策效能。​​
|
3月前
|
Kubernetes Cloud Native 安全
云原生机密计算新范式 PeerPods技术方案在阿里云上的落地和实践
PeerPods 技术价值已在阿里云实际场景中深度落地。
|
3月前
|
Kubernetes Cloud Native 安全
云原生机密计算新范式 PeerPods 技术方案在阿里云上的落地和实践
PeerPods 技术价值已在阿里云实际场景中深度落地。
|
7天前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
7天前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
7天前
|
SQL 关系型数据库 MySQL
Mysql数据恢复—Mysql数据库delete删除后数据恢复案例
本地服务器,操作系统为windows server。服务器上部署mysql单实例,innodb引擎,独立表空间。未进行数据库备份,未开启binlog。 人为误操作使用Delete命令删除数据时未添加where子句,导致全表数据被删除。删除后未对该表进行任何操作。需要恢复误删除的数据。 在本案例中的mysql数据库未进行备份,也未开启binlog日志,无法直接还原数据库。
|
1月前
|
弹性计算 运维 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生Serverless实践
简介: 通过与阿里云深度合作,国诚投顾完成了从传统 ECS 架构向云原生 Serverless 架构的全面转型。新的技术架构不仅解决了原有系统在稳定性、弹性、运维效率等方面的痛点,还在成本控制、API 治理、可观测性、DevOps 自动化等方面实现了全方位升级。
|
23天前
|
存储 弹性计算 Cloud Native
云原生数据库的演进与应用实践
随着企业业务扩展,传统数据库难以应对高并发与弹性需求。云原生数据库应运而生,具备计算存储分离、弹性伸缩、高可用等核心特性,广泛应用于电商、金融、物联网等场景。阿里云PolarDB、Lindorm等产品已形成完善生态,助力企业高效处理数据。未来,AI驱动、Serverless与多云兼容将推动其进一步发展。
92 8
|
13天前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。

相关产品

  • 云数据库 RDS MySQL 版
  • 云数据库 RDS
  • 推荐镜像

    更多