一、整体介绍
阿里云RDS伴随着阿里云的成长而成长,经历了不同的发展阶段,从最初的脚本化运营方式发展到平台化、商业化。在产品能力上逐步支持了 OpenAPI 、PostgreSQL、SQLServer等多种引擎。
阿里云RDS在过去几年中经历了智能化演进,比如通过DAS的机器学习能力支撑智能决策,通过性能参数调优、MySQL治理等来提升引擎产品的能力。2021年,阿里云RDS进行了架构升级,全向云原生演进,充分将阿里云底层的IaaS资源服务能力通过PaaS服务的进行透传。并在此基础上进行了创新,包括Serverless、ECS等。
阿里云RDS从过去基于物理机隔离的架构逐步朝着All On Ecs的方向演进,将PaaS的产品能力构建在IaaS资源服务能力上,再基于 ECS 以及ESSD实现存算分离架构进行资源解耦,为产品能力带来了极大的提升,比如可基于快照秒级恢复以及计算和存储独立扩容和缩容的能力。
在计算存储分离架构的基础之上,构建了基于K8s的集群调度系统,将引擎产品容器化部署到ECS服务器上。
在分层管控架构之上,我们构建了自己的Serverless产品能力。使用统一的管控架构支撑了四款不同产品,包括 MySQL、PostgreSQL、MariaDB以及SQL Server。除了硬核技术以外,我们也通过多种产品能力帮助开发人员提高开发效率。
二、产品趋势及技术解读
数据库在传统的RDS阶段,计算节点和存储容量都需要预设,比如通过运维人员根据业务需求进行手动配置,计算规格有限,严重限制了业务开发人员的开发效率以及 DBA 的运维效率。
云原生 RDS 能够利用DAS产品进行智能化调度,智能化预测产品或用户业务需要多少资源量,可以自动进行伸缩。
而RDS Serverless1.0和2.0阶段希望客户无需关心资源,计算规格和存储容量都能够随着业务量的发展进行扩缩容。
传统 RDS 架构下,运维人员需要根据业务的波峰波谷进行手动扩缩容,难以精准预计,极易出现资源浪费或资源储备不够的情况。同时,传统 RDS 架构下,资源伸缩的范围有限,无法完全满足业务需求。
而在Serverless架构下,计算规格和存储容量能够随着业务波峰和波谷进行弹升弹降,极大提升了运维人员的工作效率。同时,可以对资源进行更精细化、更准确的配置,节约了大量成本。
RDS Servereless产品为业务带来了以下核心竞争优势:
第一,资源配置可随着业务负载实现秒级弹性伸缩。
第二,按需使用,按量计费。
第三,构建在内核功能的创新之上,实现了内核BP Online Resize优化,弹得更稳。
第四,支持 RESTful API 访问机制。只需一个endpoint即可通过RestAPI 、HTTP 协议进行访问和操作,配置数据库资源。
我们实现了RDS On倚天ECS,包括底层 CPU 架构、ECS 机器,到上层数据库的全栈资源,并实现了软硬协同优化,使得RDS On倚天ECS的性能、稳定性等各个方技术指标看齐并超越最新一代的X86机型。平均性能提升10%,性价比提升25%,并实现了0成本的应用适配。
从过去的RDS迁移到ECS架构后,存在大量稳定性问题,需要持续不断地创新、深度优化才能使新架构的产品竞争力看齐过去物理机形态的能力。
我们对Binlog体系进行了改造,实现了Binlog In Redo模式,将原先事务提交commit的两次IO操作降为一次,大幅提升写操作的吞吐。同时,对Binlog的写模式也进行了深入调整。
RTO 是众多数据库使用者最关心的核心指标。 RDS产品过去在RTO上做了大量优化。比如大事务Recovery优化,从过去的需要小时级降至秒级;同时,对Buffer Pool进行了并行初始化优化,提升了RTO指标,对Reo的核心组件进行了深度优化,提升了产品能力。
三、产品功能发布
我们一直在思考,能否有这样一种产品形态,既能够兼顾实例的整体可用性,同时又能够最大范围实现降本增效。因此,阿里云推出了RDS MySQL的新形态——RDS MySQL集群版。
集群版相比于之前的高可能架构存在两点颇为明显的变化。
第一,集群版支持同时挂载多个从节点,这意味着会有多个备库,同时所有备库将开放给业务访问,以实现资源的最大化利用,降低成本。
第二,集群版不仅提供了最高4个9的全球最高等级SLA服务保障,同时还通过内置的MySQL主复制技术结合内置的Paxos分布式协议算法,确保数据多点性,确保数据永不丢失。
以最小成本实现数据库服务的可用性以及数据可靠性最高级别的保障,是 RDS MySQL集群版的最大竞争力。
RDS通过一系列产品功能的矩阵,实现了整体业务的降本增效。
在计算节点上,支持了基础版的只读实例,针对有明显使用时间的业务,在业务停用之后可以同步暂停RDS实例,实例暂停期间不收取任何计算节点费用,需要时又可以快速将它拉起用于生产业务。
存储节点部分也进行了核心优化。依赖云盘能力,支持了从PL0到PL3全等级的云盘矩阵,同时可以根据线上业务的吞吐需求,在PL0到PL3之间随时进行无损的在线变化。
存储流量层,通过数据库内部的核心技术实现了云盘缩容能力,可以根据业务数据量的变化实现云盘存储空间分配以及降本。
不论是计算节点实例暂停还是存储节点的可升可降,我们始终希望业务的不同阶段都可以在RDS上获得最优的资源成本与解决方案。
RDS与数据库备份产品DBS深度集成之后推出了新特性:急速备份及恢复能力。数据库物理的备份中,往往会涉及到跨存储介质的数据传输以及恢复,耗时耗力。而通过RDS极速备份及恢复能力,可以实现对全量及增量的物理备份和文件实时自动合成快照备份。进行数据恢复时,可以通过快照秒级挂载实现数据的快速恢复,大幅度缩短数据恢复时长。此前恢复1T数据大约需要4小时,而现在仅需30分钟,数据效率恢复提升达88%。
同时,也支持了针对单库单表级别的恢复能力,该能力可大范围应用在诸如游戏等多租户,需要单库单表回档的场景,让线上业务以最快速度回档到正确状态。
RDS的可观测性体验也得到了增强。首先提升了更多资源监控指标,客户可以针对RDS实例进行更全面的掌控。其次支持了全局视角的自定义监控大盘,可以根据多实例、多时间点、多监控进行数据的聚集、展示以及对比分析。
针对最为常用的指标比如资源、空间、链接、慢SQL 等,支持定期的常态化自动巡检,会定期给出报告,发布告警,用户可对全局运行状态实现全面掌控。
PostgreSQL被誉为全球最先进的开源数据库,而RDS PostgreSQL通过插件的能力扩展了其使用场景。我们发布了Ganos时空引擎插件,可应用在高新地图、路径规划等场景;发布了全加密数据库插件,可以实现从内存到磁盘全链路最高等级的加密;发布了PASE高维项目插件,可应用于图像识别、 AI 机器人等场景;发布了Babelfish插件,可以实现对SQL Server数据库的兼容以及对商业数据库的替换。
以上插件能力的加持使得RDS在AI、时空、加密等场景上具备了更好地为业务提供服务的基础能力。
四、最佳实践
从线上真实数据可以看到,Serverless已经广泛应用于资源波动、具备不确定性负载的场景中,比如运维及开发环境、IDC到云上容灾环境、音视频不定时转码、多人在线协同办公系统等。以上场景均具备一个共同特征:业务间断不连续,但在业务高峰期对数据库性能有着极高要求。
RDS Serverless通过秒极弹升、按需付费的能力,可以很好地满足此类场景的需求。在业务低峰期,可以保持在较低水位线运行,而在业务高峰到来时,又可以快速弹升以应对业务流量。大幅降低了资源成本,最高降本70%,真正实现了增效并且降本。
Babelfish具备了SQL Server商业引擎语法的兼容能力。在RDS上启用Babelfish插件之后,即可通过SQL Server语法以及 PG语法同时对数据库进行访问,以开源数据库引擎的能力以及成本实现商户数据库引擎的能力,进而将商业数据SQL Server替换,使得数据库采购成本下降 60%-70% 。
RDS砥砺前行,经历了十年发展之后,无论是从最底层的软硬协同一体化,还是数据库最核心的内核优化,亦或是最上层集群MySQL形态的推出,始终致力于让每一个客户获得更快、更稳、更安全、更好用的数据库使用体验。