PolarDB Serverless能力测评:秒级弹升、无感伸缩与强一致性,助您实现高效云数据库管理!

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 云原生数据库 PolarDB MySQL 版是阿里云自研产品,100%兼容 MySQL。PolarDB产品具有多主多写、多活容灾、HTAP 等特性,交易性能最高可达开源数据库的6倍,分析性能最高可达开源数据库的400倍,TCO 低于自建数据库50%。【评测用!】

前言

PolarDB MySQL

传统的关系型数据库有着悠久的历史,从上世纪60年代开始就已经在航空领域发挥作用。因为其严谨的一致性保证以及通用的关系型数据模型接口,获得了越来越多的应用。2000年以后,随着互联网应用的出现,很多场景下,并不需要传统关系型数据库提供的一致性以及关系型数据模型。由于快速膨胀和变化的业务场景,对可扩展性(Scalability)以及可靠性(Reliability)更加需要,而这又正是传统关系型数据库的薄弱之处。此时,新的适合这种业务特点的数据库出现,就是我们常说的NoSQL。但是由于缺乏一致性及事务支持,NoSQL被很多业务场景拒之门外。缺乏统一的高级的数据模型和访问接口,又让业务代码承担了更多的负担。数据库的历史就这样经历了多重否定,又螺旋上升的过程。

PolarDB就是在这种背景下出现的,由阿里巴巴自主研发的下一代关系型分布式云原生数据库。在兼容传统数据库生态的同时,突破了传统单机硬件的限制,为用户提供大容量、高性能、高弹性的数据库服务。

云原生数据库 PolarDB MySQL 版是阿里云完全自主研发的产品,100%兼容 MySQL。产品具有多主多写、多活容灾、HTAP 等特性,交易性能最高可达开源数据库的6倍,分析性能最高可达开源数据库的400倍,TCO 低于自建数据库50%。

image.png

PolarDB MySQL 版 Serverless

Serverless数据库能够使得数据库集群资源随客户业务负载动态弹性扩缩,将客户从复杂的业务资源评估和运维工作中解放出来。此处介绍了Serverless的工作原理、核心优势和适用场景。

数据库是现代企业IT系统中非常重要的一部分。在创建数据库时,客户往往需要比较保守地去配置数据库集群的资源,包括CPU、内存、存储以及连接数等多种参数配置,以确保业务能够在波峰和波谷都能平稳运行。在这种情况下,客户购买的集群资源在业务波谷时期会被闲置,导致整体成本偏高;而在业务压力增长阶段,集群资源又应对不足。Serverless数据库可以很好地解决这个问题。它能够使得数据库集群资源随客户业务负载动态弹性扩缩,将客户从复杂的业务资源评估和运维工作中解放出来。

PolarDB MySQL 版 Serverless的工作原理及优势

工作原理

PolarDB MySQL版Serverless提供了CPU、内存、存储、网络资源的实时弹性能力,构建计算与存储分离架构下的PolarDB MySQL版产品新形态。Serverless不仅提供网络资源、命名空间、存储空间的垂直资源隔离能力,还提供计算存储资源按需计费的能力,具有资源用量低、简单易用、弹性灵活和价格低廉等优点,赋能用户面向业务峰谷时对计算、存储能力进行快速且独立的扩缩要求,做到快速响应业务变化的同时,合理优化使用成本,进一步助力企业降本增效。相比弹性扩容,Serverless具有以下优点:

  • 打破固定资源付费的模式,做到真正负载与资源动态匹配的按量付费,可节省大量成本。

  • 对高吞吐写入场景和高并发业务进行了设计优化,同时提供了弹性扩缩能力,适合业务数据量大、并具有典型的业务访问波峰波谷场景。

  • 1秒内即可完成集群资源扩缩,业务完全无感。

Serverless集群

image.png

  • Serverless集群Proxy

Serverless Proxy为Serverless形态,Proxy资源独立于计算节点弹性扩缩无需用户选择。Serverless Proxy的计量单位是PCU,1个PCU约等于1核2 GB的资源,0.5个PCU约等于0.5核1 GB的资源。

  • Serverless集群计算节点扩缩

主节点(RW节点)和只读节点(RO节点)全部为Serverless形态,随业务负载变化而弹性扩缩,并采用单可用区共享分布式存储。

Serverless集群计算节点的计量单位是PCU,1个PCU约等于1核2 GB,0.5个PCU约等于0.5核1 GB的资源。扩缩按照0.5 PCU的增量进行,当前PCU越大,扩缩步长相对越大。

您可以通过PCU指定单节点弹性扩缩的范围,单节点的扩缩范围为1~32 PCU。每当主节点或只读节点扩缩时,节点的PCU会随之增加或减少。系统每秒钟会监测一次计算节点的PCU。

  • Serverless集群存储

存储空间采用Serverless方式,购买时无需选择容量,随着数据增长而在线自动扩容,只按实际数据量所占的存储空间大小收费。

核心优势

PolarDB MySQL版Serverless能够根据业务负载,对集群资源进行秒级动态弹降。其核心优势体现在如下几个方面:

  1. 高可用:多节点的架构保障了Serverless集群的高可用,服务等级协议SLA与普通集群相同,共同保证了Serverless集群的稳定运行。

  2. 高弹性

    • 扩缩范围广:Serverless业内自动扩缩范围最广的云数据库,支持自动横向扩展,单集群支持0~1000核范围内的无感扩缩。

    • 秒级扩缩:从容应对业务负载突增,5秒完成探测,1秒完成扩展;同时在业务负载下降时,集群资源阶梯性自动释放。

    • 业务无感:扩缩过程业务无影响。

  3. 数据强一致:支持高性能模式的全局一致性,在集群内实现数据强一致,数据写入后在只读节点上立即可读,性能与弱一致性基本一致。

  4. 低成本:以计算能力(PCU)定价,真正做到按量付费,帮助客户节省成本。成本下降最高可达80%。

  5. 免运维:扩缩版本升级、系统部署、扩缩容、报警处理等所有运维工作由阿里云专业团队完成,用户无感知,业务无影响,服务持续可用,真正免运维。

如在业务波动较大的场景下,普通集群和Serverless集群资源使用和规格变化情况如下图:

image.png

由上图可以看到,在业务波动较大的场景下:

  • 普通集群:在波谷期浪费的资源较多,在高峰期资源不足,业务受损。

  • Serverless集群:

    • 由于其规格随业务需求量随时调整,总体浪费的资源很少,提升了资源利用率,降低了资源使用量。

    • 在高峰期也能完全满足业务需求,保证业务不受损,提高了系统的稳定性。

    • 打破固定资源付费模式,真正做到了负载与资源动态匹配的按量付费模式,可节省大量成本。

    • 无需手动变配,提高了运维效率,提升了运维管理人员和研发人员的幸福感。

    • 支持自动启停能力。当没有连接时,集群自动暂停,释放计算成本;当请求到来时,集群自动无感启动。

    • 对高吞吐写入场景和高并发业务场景进行了设计优化,同时提供了弹性扩缩能力,适合业务数据量大、并具有典型的业务访问波峰波谷场景。

Serverless集群的适用场景

  • 开发、测试环境等低频数据库使用场景。

  • 中小企业建站服务等SaaS应用场景。

  • 个人开发者用户。

  • 学校教学、学生实验等教育场景。

  • 物联网(IoT)、边缘计算等不确定负载场景。

  • 业务有波动或不可预测的用户。

体验极致弹性的PolarDB Serverless确保数据业务持续在线实践

在此实验中,PolarDB for MySQL Serverless实例默认开启严格强一致性集群SCC(Strict Consistency Cluster)服务。SCC功能为PolarDB for MySQL Serverless提供了跨节点无损读扩展的能力。PolarTrans事务系统利用提交时间戳技术CTS和RDMA网络,在内核层面提供集群强一致性读SCC服务,在不损失性能的基础上,保证发往集群任意副本的读请求都可以获得强一致性的结果。

设置Serverless弹性策略

复制下方地址,在Chromium网页浏览器打开新页签,粘贴并访问云数据库PolarDB控制台。

https://polardb.console.aliyun.com/

image.png

在集群列表页面,找到您的PolarDB实例,单击实例ID。

image.png

在基本信息页面的数据库节点区域中,单击右上角的Serverless配置。

image.png

设置Serverless参数如下:

image.png

主节点Serverless弹性压测

执行如下命令,初始化相关数据

sysbench /usr/share/sysbench/oltp_read_write.lua
--mysql-host=PolarDB实例的集群私网地址 
--mysql-port=3306 
--mysql-user=test_user 
--mysql-password=Password123 
--mysql-db=sbtest 
--tables=128 
--table-size=1000000 
--report-interval=1 
--range_selects=1 
--db-ps-mode=disable 
--rand-type=uniform 
--threads=256 
--time=12000 prepare

【注释】:

  • sysbench:sysbench是一个多线程的基准测试工具,用于评估系统性能。

  • /usr/share/sysbench/oltp_read_write.lua:这是sysbench提供的一个Lua脚本,用于执行OLTP(联机事务处理)类型的读写测试。

  • --mysql-host:指定PolarDB实例的集群私网地址,表示要连接的MySQL服务器的主机名或IP地址。

  • --mysql-port:指定MySQL服务器的端口号,通常为3306。

  • --mysql-user:指定连接MySQL服务器所使用的用户名。

  • --mysql-db:指定要在MySQL服务器上使用的数据库名称。

  • --tables:指定在测试期间创建的表的数量。

  • --table-size:指定每个表的行数。

  • --report-interval:指定报告输出的时间间隔(以秒为单位)。

  • --range_selects:指定是否进行范围查询操作。

  • --db-ps-mode:指定数据库预处理状态,此处为禁用。

  • --rand-type:指定生成随机数的方式,这里使用均匀分布。

  • --threads:指定并发线程数,即同时执行的任务数量。

  • --time:指定测试运行的总时间(以秒为单位)。

  • prepare:指定执行预备阶段,将在测试之前创建和填充表。

image.png

此时可以看到明显的增加。

image.png

由于初始化数据的负载也会造成Serverless弹升,在执行完毕后等待2-3min,在规格下降到初始状态(1PCU)后,再执行正式的压测命令。

image.png

执行如下命令,开始进行256并发读写混合压测。

sysbench /usr/share/sysbench/oltp_read_write.lua 
--mysql-host=PolarDB集群私网地址
--mysql-port=3306 
--mysql-user=test_user 
--mysql-password=Password123 
--mysql-db=sbtest 
--tables=128 
--table-size=1000000 
--report-interval=1 
--range_selects=1 
--db-ps-mode=disable 
--rand-type=uniform 
--threads=256 
--time=12000 run

image.png

返回如下结果,根据Sysbench输出可以直接观察到,随着时间的推移,在同样的并发数下,tps逐渐上升,延迟(lat)逐渐下降,最终到达一个稳定值,这说明PolarDB的处理能力借助Serverless弹性获得提升。

image.png

只读节点Serverless弹性压测

回到刚才的Serverless配置界面。

在设置Serverless配置参数对话框中,将只读节点个数扩展上限从0调整为最大值7,只读节点个数扩展下限保持0不变,单击确定

image.png

修改完后再执行如下命令,通过访问PolarDB for MySQL Serverless集群私网地址发起256并发读写混合压测请求。

sysbench /usr/share/sysbench/oltp_read_write.lua 
--mysql-host=PolarDB集群私网地址 
--mysql-port=3306 
--mysql-user=test_user 
--mysql-password=Password123 
--mysql-db=sbtest 
--tables=128 
--table-size=1000000 
--report-interval=1 
--range_selects=1 
--db-ps-mode=disable 
--rand-type=uniform 
--threads=256 
--time=12000 run

和上一节测试类似,从Sysbench输出可以直接观察到,随着时间的推移,在同样的并发数下,tps逐渐上升,延迟(lat)逐渐下降,最终到达一个稳定值。这说明PolarDB的处理能力借助Serverless弹性获得提升。

image.png

初始状态下,在读写混合场景下,读写流量会首先转发到集群唯一节点,即主节点(RW)中。当主节点弹升到最大规格后,Serverless系统会逐个创建只读节点,分摊主节点的读请求,直到只读节点的数量满足当前负载。当只读节点分摊读请求后,主节点负载会降低,触发PCU弹降,为未来支持更多写负载预留了弹升空间。更多具体的信息我们可以从后面的监控中查看。

image.png

从监控可以看出,PolarDB收到读写混合请求后,主节点会首先迅速弹升到最大的32 PCU,之后监控逐步出现两个只读节点。当只读节点分摊主节点的读请求后,主节点CPU使用率逐步下降,规格最终稳定在22 PCU。

image.png

我们可以看到,第一个只读节点创建后,也会立刻弹升到32 PCU。此时系统会尝试继续创建只读节点,分摊读请求。因此当第二个只读节点创建后,第一个只读节点负载降低,规格自动弹降。最终两个只读节点的规格分别稳定在29 PCU和28 PCU(以样例来看,测试的最终数值会略有浮动)。由于目前2个只读节点都没有到最大规格32 PCU,系统判断目前Serverless规格已经满足实际负载,不会再继续增加新的只读节点。

根据该实验之前的配置,PolarDB for MySQL Serverless最多支持扩展出7个只读节点。

只读并发压测

sysbench /usr/share/sysbench/oltp_read_only.lua 
--mysql-host=xxx 
--mysql-port=3306 
--mysql-user=test_user 
--mysql-password=Password123 
--mysql-db=sbtest 
--tables=128 
--table-size=1000000 
--report-interval=1 
--range_selects=1 
--db-ps-mode=disable 
--rand-type=uniform 
--threads=256 
--time=12000 run

当数据库接收到新的只读负载后,首先当前的2个只读节点会弹升到最大规格32 PCU,之后Serverless系统会继续创建新的只读节点,直到满足新增只读负载的要求。

image.png

自动缩容能力测试

停止压测之后,在监控页上,可以看到PolarDB for MySQL Serverless的计算节点首先会自动缩容,之后新增的只读节点会逐步回收(预计耗时15-20min)。

image.png

从上面的实验可以看出,PolarDB for MySQL Serverless的节点数量和规格都能够根据负载进行自动伸缩与自动配置。

全局一致性(SCC)测试

高性能全局一致性SCC特性可以为PolarDB for MySQL Serverless提供跨节点无损读扩展的能力,即RO的无损强一致读。传统的Serverless的方案均是基于单机原地升降配实现,其规格受限于单物理机资源。而当RO能借助SCC提供无损强一致读后,针对大部分读多写少业务,我们都可以跨机提供CPU资源,上限远超单物理机限制。

开源的mysqlsct工具用于检验数据库集群的强一致性读能力, 该工具通过跨session的写入+读取+结果对比的方式来测试数据库集群强一致性读的功能和性能。

在设置Serverless配置参数对话框中,将只读节点个数扩展下限从0调整为1,单击确定。

image.png

/root/mysqlsct 
--host-rw=PolarDB集群私网地址 
--host-ro=PolarDB集群私网地址 
--port-rw=3306 
--port-ro=3306 
--user=test_user  
--password=Password123 
--iterations=100000 
--table-cnt=1 
--table-size=1000 
-f=0 
--concurrency=1 
--database=sct 
--sc-gap-us=0 
--report-interval=2 
--test-mode=sct

image.png

执行后,可以看到一致性检查全部通过,输出的信息类似如下截图:

image.png

单击页面左上角的修改参数按钮,修改loose_innodb_polar_scc参数为OFF,单击提交修改,单击确定,关闭SCC特性。

image.png

重新执行mysqlsct测试命令。

/root/mysqlsct 
--host-rw=PolarDB集群私网地址 
--host-ro=PolarDB集群私网地址 
--port-rw=3306 
--port-ro=3306 
--user=test_user  
--password=Password123 
--iterations=100000 
--table-cnt=1 
--table-size=1000 
-f=0 
--concurrency=1 
--database=sct 
--sc-gap-us=0 
--report-interval=2 
--test-mode=sct

执行后,可以看到一致性检查出现失败。

image.png

从实验可以看出,PolarDB for MySQL Serverless借助高性能全局一致性SCC特性,提供了跨节点无损读扩展的能力。

使用体验及测评

云原生数据库 PolarDB数据库也是老朋友了,之前也是使用和评测过PostgreSQL版,这次终于也轮到mysql版本了。

对于官方给出的这五点在上述实验中也是可以切身体会到的,其优势是真的一目了然。

image.png

这里我也想额外说几点使用PolarDB MySQL版 Serverless的感想:

  1. 极其灵活:PolarDB MySQL版 Serverless允许根据实际需求自动调整计算资源,避免了手动管理数据库容量和性能的繁琐工作。这种灵活性使得数据库能够适应不断变化的负载需求,为业务运行提供了更大的弹性。

  2. 成本优化:公司最需要考虑的就是成本,由于Serverless模式下数据库会根据实际负载自动伸缩,因此可以最大程度地避免资源的闲置浪费,从而达到成本优化的效果。对于负载波动较大的业务场景,可以显著降低数据库成本。

  3. 响应速度:PolarDB MySQL版 Serverless具有快速的资源弹升速度和自动启停功能,在需要时能够快速响应业务负载增加的情况,提供稳定的性能。

PolarDB MySQL版 Serverless确确实实带来了上述好处,不过在使用时我也有一些思考,也算是一些建议吧,这里一并给出:

  1. 提供更细粒度的资源伸缩选项:目前PolarDB MySQL版 Serverless支持从0核到32核的范围内的纵向扩展,以及从0个到8个节点的范围内的横向扩展。然而,有时候业务需要更小的粒度进行资源调整,因此提供更细粒度的资源伸缩选项将更加灵活和实用。

  2. 支持更多数据库引擎:目前Serverless版貌似只出了MySQL和PostgreSQL数据库引擎,为了满足不同的应用需求,可以考虑增加对其他数据库引擎的支持,例如SQL Server、Oracle等。

  3. 改进冷启动性能:PolarDB MySQL版 Serverless在冷启动时可能会有一定的延迟,这对于某些对实时性要求较高的应用可能会产生影响。优化冷启动性能,减少启动时间,将有助于提升用户体验。

  4. 引入更智能的监控和报警功能:为了帮助用户更好地管理和监控数据库性能,可以考虑引入更智能的监控指标和报警功能,比如结合大模型等采用自然语言来分析判断故障。

时间不早了,这次测评就到此为止吧,也希望PolarDB MySQL 版 Serverless未来可以优化的越来越好!

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
1月前
|
关系型数据库 MySQL 分布式数据库
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶!
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶,邀请好友完成更有机会获得​小米Watch S3、小米体重称​等诸多好礼!
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶!
|
15天前
|
关系型数据库 分布式数据库 数据库
锦鲤附体 | PolarDB数据库创新设计赛,好礼不停!
锦鲤附体 | PolarDB数据库创新设计赛,好礼不停!
|
1月前
|
关系型数据库 分布式数据库 数据库
PolarDB 开源:推动数据库技术新变革
在数字化时代,数据成为核心资产,数据库的性能和可靠性至关重要。阿里云的PolarDB作为新一代云原生数据库,凭借卓越性能和创新技术脱颖而出。其开源不仅让开发者深入了解内部架构,还促进了数据库生态共建,提升了稳定性与可靠性。PolarDB采用云原生架构,支持快速弹性扩展和高并发访问,具备强大的事务处理能力及数据一致性保证,并且与多种应用无缝兼容。开源PolarDB为国内数据库产业注入新活力,打破国外垄断,推动国产数据库崛起,降低企业成本与风险。未来,PolarDB将在生态建设中持续壮大,助力企业数字化转型。
85 2
|
2月前
|
关系型数据库 分布式数据库 数据库
来!跟通义灵码一起参加PolarDB 数据库创新设计赛,突破传统,探索人机协作
无论你是数据库新手,还是技术大咖,通义灵码邀请你参加2024 年全国大学生计算机系统能力大赛 PolarDB 数据库创新设计赛(天池杯),新参赛模式启动,挑战极限!
109 11
|
2月前
|
存储 关系型数据库 分布式数据库
揭秘PolarDB:中国云原生数据库的超级英雄,如何颠覆传统数据存储?
在数字化时代,数据成为企业的核心资产,而云原生数据库则是推动企业转型的关键。PolarDB凭借其先进的存储计算分离架构,在性能、可靠性和易用性方面脱颖而出,成为国内领先的选择。它支持多种数据库引擎,提供多副本存储机制,并采用按量付费模式,有效降低管理和成本压力,助力企业实现高效、可靠的数字化转型。
68 1
|
2月前
|
人工智能 自然语言处理 Serverless
阿里云函数计算 x NVIDIA 加速企业 AI 应用落地
阿里云函数计算与 NVIDIA TensorRT/TensorRT-LLM 展开合作,通过结合阿里云的无缝计算体验和 NVIDIA 的高性能推理库,开发者能够以更低的成本、更高的效率完成复杂的 AI 任务,加速技术落地和应用创新。
152 13
|
3月前
|
Serverless API 异构计算
函数计算产品使用问题之修改SD模版应用的运行环境
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
运维 Serverless 网络安全
函数计算产品使用问题之通过仓库导入应用时无法配置域名外网访问,该如何排查
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
17天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
53 1
|
21天前
|
运维 监控 Serverless
Serverless架构在图像处理等计算密集型应用中展现了显著的优势
Serverless架构在图像处理等计算密集型应用中展现了显著的优势
30 1