随着云计算的迅速发展,越来越多的企业开始将自己的业务迁移到云端。云服务除了帮助客户实现更高效、更安全、更灵活的运营模式,也在不断地通过技术革新帮助企业客户降低资源成本。阿里云瑶池旗下的云数据库RDS PostgreSQL Serverless商业化上线是其全面拥抱云原生2.0的开始,但不是终点。
RDS PostgreSQL Serverless是一种全托管型的云数据库服务,它可以帮助用户快速搭建高可靠、高性能的PostgreSQL数据库环境,无需用户自行管理和维护底层的服务器。相比传统的云数据库服务,RDS PostgreSQL Serverless的最大特点是用户不需要预付费、不需要选择规格,只需按照实际业务负载所需资源使用量付费即可。这种按需分配资源的模式可以让企业更加灵活地应对业务的变化,无需用户提前预置规格,避免因为预估过高造成的浪费以及预估过低造成的业务受损。
RDS PostgreSQL Serverless的另一个优点是弹性伸缩,它可以根据用户的实际负载情况自动调整资源的分配,自动伸缩CPU和内存,以保证数据库的可用性和性能。这种自动化资源管理可以让用户免除繁琐的运维工作,专注于核心业务。除此之外,RDS PostgreSQL Serverless还具有以下的优点:
- 安全性:提供多层次的安全保障,包括网络隔离、数据加密、审计日志等,保证了数据的安全和隐私。
- 管理简单:提供强大的管理工具和API,方便用户进行数据库的创建、备份、恢复、监控等操作。
- 性能卓越:采用阿里云自研存储,支持高并发和大容量的数据读写,可以满足各种不同业务场景的需求。
RDS产研团队针对PostgreSQL Serverless产品做了深度研发与优化,下面从技术角度帮助大家一探究竟。
1.内核极致优化,促使性能丝般顺滑
RDS PostgreSQL Serverless内核在内存弹升弹降和内核启动速度做了极致优化,助力Serverless秒级弹性。
1.1 Buffer Pool Online Resize能力
PostgreSQL的社区版本在修改包括shared buffer在内的很多参数时,都是重启才能生效的。RDS PostgreSQL Serverless内核通过深度优化,实现了shared buffer的在线扩缩容能力,保证了在整个扩容或缩容的过程中,极致平滑业务无感,即使是业务高峰期也丝毫不受影响。
由于该部分技术细节涉及到专利,目前暂时不方便透露。
1.2 优化海量表实例启动速度,从数分钟缩短至30秒内
RDS PostgreSQL深度优化内核启动速度,在千万数量级的表文件下,内核启动时间由数分钟级缩短到 30 秒内。这大大优化了实例启动速度,方便实例在暂停状态下快速启动。
附录具体测试数据:
2. 充分利用云原生设施弹性能力,进行架构设计和分层
在技术架构上,RDS PostgreSQL Serverless全面拥抱云原生2.0时代,接入层、路由层、计算层、存储层充分利用云原生基础设施的弹性能力,将资源解耦和分层弹性做到极致。另外,辅助以智能决策能力、统一资源调度能力等成熟的周边工具,将Serverless服务做到更加平稳和顺滑。
2.1 接入层
传统数据库大多是通过JDBC/ODBC进行数据库CURD等操作,对于程序员的技术能力有较高的要求。Serverless形态下,我们可能通过在业务应用下游增加一层接入层,在接入层中封装对数据库的访问,并对业务应用暴露 HTTP形式的Data API,用户通过请求 Data API即可完成对数据库的访问,大大地降低了数据库的使用门槛,让程序员可以花更多的精力专注在业务上。
同时通过Data API屏蔽了底层数据库引擎的复杂性,使得数据库引擎对上层业务透明,大大降低了上层业务架构的开发成本和复杂度。
2.2 路由层
Serverless形态通过在数据库之上增加一层路由层,把业务应用访问数据库的连接全部收敛到路由层的proxy上。数据库实例在资源池中弹性伸缩时,如遇本地没有资源,可以借助proxy把业务应用的数据库连接暂时hold住,等后端数据库实例弹性伸缩完成之后,proxy再放行业务的数据库连接,通过这个方式保证了数据库实例的跨资源池弹性伸缩对业务应用无感知,从而做到数据库服务持续在线。
同时由于业务应用的数据库连接已经全部收敛到了路由层的proxy上,通过访问proxy就可以判断数据库实例是否有流量,在数据库实例没有流量的情况下,就可以自动暂停数据库来进一步的降低资源成本。当业务应用连接过来之后,再自动进行数据库实例的启动,从而做到业务应用无感知的进一步降本增效。
2.3 计算层
AliPG内核完全兼容社区PostgreSQL并在社区内核的基础上做了深度定制优化,通过支持shared buffer online resize, 内核启动速度优化等一系列手段,保证了数据库的性能随着计算资源的弹性伸缩而弹性变化,同时保证计算资源弹性伸缩的过程中数据库实例的性能平稳变化,不会剧烈抖动。
2.4 存储层
RDS PostgreSQL Serverless构建于阿里云云原生基础设施之上,使用阿里云块存储产品构建存储层,充分发挥块存储的高性能、低成本、低时延、可扩展的优势,同时依赖块存储的多副本、分布式等能力,为Serverless实例的数据安全性保驾护航。
3. 利用产品特性,发挥Serverless极致优势
3.1 本地秒级伸缩
依托云原生能力,Serverless实例可以在3-5秒完成资源伸缩,即当实例负载发生突变,系统会快速感知到变化并分配合理的资源量让实例负载始终趋向于合理的范围。
如上架构示意图所示,弹性调度系统设计拆分为4个阶段,共同完成实例的快速弹性伸缩:
- 监控系统秒级感知实例的综合状态,包括计算、存储、网络以及PostgreSQL的核心指标,并将核心数据上报给控制器;
- 决策控制模块根据实例的实时状态综合判断实例的性能瓶颈,给出资源弹性伸缩建议;
- 资源调度系统负责完成资源的再分配,确保资源合理使用不发生实例间的资源争抢;
- 最终控制器会完成实例所需计算资源和相应内核参数的修改,确保实例资源达到最佳配比;
通过以上一系列的任务执行+正反馈,不断地动态调整,使实例平稳运行在合理的资源区间,给用户带来极致的弹性和性价比。
3.2 存储自动扩容
RDS PostgreSQL Serverless依托于块存储的在线扩容能力,通过对磁盘水位的实时探测,对磁盘使用率达到一定阈值的实例按需执行磁盘扩容(最大32T)。存储自动扩容最大限度地避免了数据库实例因为磁盘空间不足锁定导致业务中断,整个过程自动完成,无需用户介入,做到让用户使用起来省心又放心。
3.3 秒级计费能力
RDS PostgreSQL Serverless实例实现了秒级计费,正常运行的实例,计费系统会记录实例秒级RCU资源量和磁盘空间的变化,并推送计量数据到计费系统精确计费,做到用户用多少资源就付多少费用,让用户省到极致。
4. 最佳实践
RDS PostgreSQL Serverless在中国站、国际站主流地域均已开放,欢迎登录阿里云 RDS产品官网进行体验。
4.1 创建RDS PostgreSQL Serverless实例
1. 登录RDS控制台:点击「链接」
2. 计费方式选择:Serverless,类型选择:PostgreSQL,然后根据业务需求选择地域和RCU范围,然后下一步创建实例。
4.2 调整实例弹性配置
1. 打开实例详情页,找到配置信息,点击:调整弹性设置。
2. 根据业务需求调整实例的RCU伸缩范围。
4.3 查看实例当前RCU
打开实例详情页,下拉到最下面即可看到实例当前RCU。
5. 未来展望
根据Serverless目前的趋势和发展情况,可以预见未来它将继续得到更广泛的应用和开发,为企业带来更加便捷高效的数据库解决方案。RDS PostgreSQL Serverless会持续在性能和功能上优化(诸如实例启停、无感跨机迁移等)和完善,真正做到自来水式的数据库服务。同时,RDS PostgreSQL灵活的可拓展性与Serverless结合也会在更多的场景化中碰撞出火花,比如AIGC、时序、时空等,让我们拭目以待。
作者信息:
渊渱,RDS PostgreSQL管控主力研发,热爱并喜欢数据库,有任何问题欢迎邮件vogts.wangt@alibaba-inc.com