RDS MySQL 云原生架构实践

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,企业版 4核16GB
推荐场景:
HTAP混合负载
云原生数据库 PolarDB 分布式版,标准版 2核8GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 作者:王颜培(感仰)内容简要:一、阿里云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更智能地帮助我们的业务开发,提升数据库的异常自定位,以及让数据库拥有更好的自治能力。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
运维 监控 Devops
深入理解微服务架构:从理论到实践
随着数字化转型的加速,微服务架构已成为现代软件开发的重要趋势。本文将通过数据导向和科学严谨的分析方法,探讨微服务架构的核心概念、优势与挑战,并结合逻辑严密的案例研究,揭示如何在实际项目中有效实施微服务。我们将引用权威研究和统计数据,深入解读微服务对企业技术栈的影响,同时提供一套完整的微服务实施策略,旨在帮助读者构建更加灵活、可维护的软件系统。
|
2天前
|
Cloud Native Java 微服务
使用Java构建可伸缩的云原生应用架构
使用Java构建可伸缩的云原生应用架构
|
3天前
|
存储 关系型数据库 分布式数据库
PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题
【7月更文挑战第3天】PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题。此架构让存储层专注数据可靠性,计算层专注处理SQL,提升性能并降低运维复杂度。通过RDMA加速通信,多副本确保高可用性。资源可独立扩展,便于成本控制。动态添加计算节点以应对流量高峰,展示了其灵活性。PolarDB的开源促进了数据库技术的持续创新和发展。
20 2
|
3天前
|
设计模式 安全 持续交付
探索微服务架构下的后端开发实践
在现代软件开发领域,微服务架构已成为一种流行的设计模式,它通过将应用程序分解为一组小的服务来促进敏捷开发和可扩展性。本文深入探讨了微服务架构的核心概念、技术选型、数据一致性挑战以及安全性考虑,旨在为后端开发人员提供一份全面的微服务开发指南。文章结合最新的研究成果和业界最佳实践,分析了微服务架构的优势和面临的挑战,并提出了相应的解决方案。读者将了解到如何在实际项目中应用微服务原则,以及如何克服实施过程中的技术和组织障碍。
|
4天前
|
存储 设计模式 监控
后端开发中的微服务架构实践与挑战
在数字化时代背景下,微服务架构作为现代软件工程的典范,被广泛应用于后端开发领域。本文将深入探讨微服务架构的核心概念、实施策略及其面临的主要挑战,同时提供一系列针对性的解决方案和最佳实践。通过引用最新的研究成果和行业案例,文章旨在为后端开发者提供一个全面的微服务架构指南,帮助他们在构建和维护复杂系统时做出明智的决策。
11 1
|
2天前
|
中间件 BI 测试技术
【实践篇】领域驱动设计:DDD工程参考架构
领域驱动设计(DDD)参考架构旨在为团队提供DDD实践的起点,强调业务与技术的分离,考虑多种架构风格如分层、六边形等。它包括多限界上下文结构,每个上下文内有应用层(不含领域逻辑)、领域层(含领域模型和事件)和网关层。接入层负责外部请求的处理,业务层协调不同上下文。组件包括Start(启动)、Common(通用)、API、Facade、Application Service、External API、Query、Domain和Gateway,各组件有明确的职责和依赖关系,如Gateway处理技术细节并作为系统与外部的接口。架构设计是多因素权衡,适应实际工程需求。
|
2天前
|
Kubernetes Cloud Native 安全
云原生架构:推动数字化转型的关键技术
本文旨在深入探讨云原生架构如何成为推动企业数字化转型的重要技术。通过分析云原生的核心原则、实践案例和面临的挑战,揭示其在现代IT战略中的核心地位。文章将基于最新的行业报告和科学研究,提供数据支持的分析,并结合逻辑推理,为读者呈现一个全面而深刻的云原生技术视角。
12 0
|
3天前
|
消息中间件 监控 Cloud Native
阿里云云原生生态强调事件驱动架构(EDA),借助EventBridge和EventMesh实现微服务间的高效协作。
【7月更文挑战第3天】阿里云云原生生态强调事件驱动架构(EDA),借助EventBridge和EventMesh实现微服务间的高效协作。EDA提升系统弹性和可维护性,促进业务敏捷性。实施路径包括事件模型设计、集成阿里云服务、开发事件处理器和监控优化。通过阿里云服务,开发者能轻松构建响应式、可扩展的云原生应用,加速创新并驱动数字化转型。
12 0
|
4天前
|
Kubernetes 负载均衡 Cloud Native
云原生架构下的微服务治理之道
随着云计算技术的不断演进,云原生架构已成为现代软件开发的重要趋势。本文旨在探讨在云原生环境中微服务治理的关键策略和最佳实践。通过分析微服务架构的复杂性及其对治理机制的需求,文章将深入讨论如何利用云原生工具和技术实现高效的服务发现、配置管理、流量控制以及安全策略。我们将展示数据支持的分析结果,以证明采用这些治理措施能够显著提高系统的稳定性、可扩展性和安全性。此外,文章还将引用相关领域的科学研究和权威统计数据,以确保内容的科学性和严谨性。
|
4天前
|
Cloud Native 持续交付 云计算
云原生架构的演进与实践
随着云计算技术的不断成熟,云原生架构逐渐成为企业数字化转型的核心驱动力。本文将深入探讨云原生架构的发展历程、关键技术组件以及在实际应用中的优化策略。通过分析最新的行业数据和案例研究,揭示云原生技术如何推动业务敏捷性、提升系统可靠性和降低运营成本。

相关产品

  • 云数据库 RDS MySQL 版