【实操系列】 AnalyticDB PostgreSQL发布实例计划管理功能,实现资源分时弹性&分时启停

本文涉及的产品
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 简介: 本文将对AnalyticDB PostgreSQL产品的计划任务管理功能以及其背后的实现机制和最佳实践做详细介绍。

背景

云原生数仓AnalyticDB PostgreSQL在2022年8月份对外发布了手动启停和秒级计费功能,在实例暂停期间计算资源免费,可以很好地帮助用户节约成本。在同年9月份,对外公测了计划管理功能,让用户由原来的“手动挡”切换到“自动挡”,同时,提供了更加丰富的资源弹性能力,支持计划启停和计算节点扩缩容,方便用户基于时间维度来规划实例的资源使用情况,进一步节约成本。


实现方案

整体架构

基于手动启停的技术框架, 计划任务在执行层增加了计划任务管理模块,同时引入了定时任务调度器来定时执行计划任务。


计划任务管理

计划任务模型

指定时间计划

指定时间执行计划任务(启动,暂停,扩容,缩容),适用于突发事件,比如想临时跑个批量任务,临时扩容,跑完后立即缩容,合理规划资源使用量。

周期执行计划

按照固定的周期执行任务(启动,暂停,扩容,缩容),适用于有规律的业务,比如离线批跑业务,每天凌晨批量执行期间扩容计算资源,跑完后再减少计算资源。


计划任务调度

计划任务和实例进行关联,一个实例可以创建多个计划任务。定时任务调度器每1min调用一次业务控制器的执行任务接口,业务控制器查询所有待执行的计划任务,并采用异异步线程池的方式来执行具体的计划任务。考虑到定时任务调度器的调度周期,理论上任务执行时间最大会有1分钟的延迟。

计划任务状态机

计划任务主要有以下几种状态,其状态转换如下图所示:

  • pending: 计划的初始状态,等待被调度执行
  • running: 计划执行中
  • finished:指定时间计划执行成功会进入到该状态,表示任务执行成功执行完成
  • success:周期任务本周期执行成功
  • failure: 任务执行失败,等待重试
  • discard:失败重试达到一定的阈值,表示计划执行失败,不再重试
  • cancel: 计划被暂停
  • deleted:计划被删除


计划任务带来的挑战

计划任务能够让用户在时间维度规划资源使用情况,在业务低峰时自动缩容,甚至暂停实例,在业务高峰时自动启动或者扩容计算资源,最大程度上节省用户成本。同时,计划任务对产品的自动化运维带来了更高的挑战:

  1. 计划任务要准时
  2. 计划任务成功率要高
  3. 产品成本不能增加


如何保证计划按时执行

为了保证计划任务能够按时执行,我们主要从定时任务调度器和监控告警两个方面来考虑:

  1. 定时任务调度器的执行逻辑足够简单,保证不会因为额外逻辑导致调度延迟;同时定时框架本身提供了任务执行失败或者延迟的告警;
  2. 完善计划任务监控告警,除了在计划管理模块中增加任务执行延迟的告警,还需要提供额外的巡检模块,定时对待执行的任务进行检测,一旦发现计划任务延迟大于一定阈值,则进行告警;


如何保证计划成功率

计划任务分为两类,第一类不依赖底层资源,比如暂停,缩容,这类任务主要和执行时的运行环境有关,失败的概率相对小一点;即使失败了,只要在可控的时间范围内处理好,对用户的影响也是可控的。但是,对于启动和扩容类任务的成功率,除了依赖当时运行时环境有关,还和底层的资源池水位有关。这类任务如果执行不及时,或者执行失败将会对用户的业务产生影响,容易引发生产故障,所以如何保障这类任务的成功率,是我们首要考虑的问题。


adbpg serverless实例底层采用资源池的模式部署,可以提升实例的生产和弹性速度,实现秒级扩缩容;不过,资源池需要维护一定的资源buffer,如果资源售卖率上不去,会增加业务成本。对于计划类任务,如果实例暂停或者缩容,资源不释放,是可以保证实例在启动或扩容时候的资源,但这无疑会增加产品的成本。如果资源释放了,如何保证实例在启动或扩容一定有资源? 我们采用采用冷热分池的资源池模式,热池里面存放可调度的资源,热池不用维护资源buffer;冷池存放预装好业务组件的ecs,停机存放,计算资源不收费,仅需要承担系统盘的费用,在热池资源不足时,冷池可以在业务无感知的情况下弹升到热池。冷热资源池模式具体的实现原理如下:

  • 自动扩缩容控制器会每5分钟为一个点,预测下一个点的资源售卖量,并主动维持热池的资源总量在预测值的水平
  • 资源调度器在进行资源评估时,如果当前可调度的节点无法满足资源评估,需要再评估一次冷池的资源,仅评估ecs规格是否可以新购(同单租户的资源评估逻辑),冷池资源可以满足新购的需求时,返回资源评估成功
  • 资源调度器在收到实例创建请求时,调在热池进行调度,如果资源不足,通知cluster-autoscaler缺少的资源总量
  • 自动扩缩容控制器在收到弹升事件后,需要把资源量转换成ECS节点数,并执行冷池扩容到热池的流程
  • 业务层在实例创建失败时会自动重试,只要在重试间隔内冷池资源能够弹升成功,那实例最终会创建成功,业务无感知。


最佳实践

用户在购买一个Serverless实例后,可根据以下操作完成对计划任务的创建,并可在事件中心查看计划任务的执行记录;

提示: 目前Serverless 仅有按量付费支持计划任务;

点击购买Serverless实例 按量付费试用


创建指定时间计划

登陆云原生数仓AnalyticDB PostgreSQL产品控制台,进入实例详情页面,选择计划管理,点击击"创建计划任务":

需要注意的是,这里指定的运行时间是UTC时间,需要根据当地时间进行换算。在计划任务创建成功后,可以计划列表页面查看计划的详细信息,包括计划状态,计划执行时间等。

创建周期执行计划

登陆云原生数仓AnalyticDB PostgreSQL产品控制台,进入实例详情页面,选择计划管理,点击击"创建计划任务":

需要注意的是,cron表达式是按照UTC时间来计算,需要根据当地时间进行换算。在计划任务创建成功后,可以计划列表页面查看计划的详细信息,包括计划状态,计划执行时间等。

编辑计划任务

对于已经创建的计划任务可以进行编辑,修改计划任务的名字,描述,以及运行时间。

禁用计划任务

如果想暂时不想执行计划任务,可以临时禁用。禁用后,计划任务状态变成已禁用,计划任务不再执行

启用计划任务

对于禁用的计划,在想用的还可以恢复

删除计划任务

如果不再想执行计划,可以将计划任务删除。

删除计划任务后,在计划列表中将无法看到。

查看时间变更记录

计划任务的操作会在通知类事件中展示,方便对计划任务的变更历史进行追溯。同时,计划任务的执行结果也会在通知类事件中展示。



结束语

降本增效一直是客户和我们共同的目标,从手动启停,秒级计费,再到计划任务,我们不断打磨产品的能力,力求给用户提供性价比更高,更易用的云原生数仓产品。

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
7月前
|
弹性计算 监控 Serverless
Serverless 应用引擎常见问题之相同的配置(4U8G)需要多个实例来扛如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
168 5
|
23天前
|
关系型数据库 Serverless 分布式数据库
扩缩容操作对PolarDB Serverless的性能有多大影响?
PolarDB Serverless 的扩缩容操作对性能会产生一定的影响,但通过合理的规划、监测和措施,可以将这种影响控制在较小的范围内。同时,随着技术的不断进步和优化,扩缩容操作对性能的影响也会逐渐减小,为用户提供更稳定、高效的数据库服务体验。
|
23天前
|
监控 关系型数据库 Serverless
扩缩容操作对 PolarDB Serverless 性能的影响
扩缩容操作对 PolarDB Serverless 性能的影响
22 3
|
6月前
|
运维 Kubernetes Java
Serverless 应用引擎产品使用合集之如何设置能让应用定时启停
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
6月前
|
存储 关系型数据库 Serverless
PolarDB产品使用问题之开启Serverless功能后如何设置资源的扩缩范围
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
6月前
|
人工智能 运维 Serverless
Serverless 应用引擎产品使用合集之如何查看预留实例数
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
7月前
|
运维 Serverless API
Serverless 应用引擎产品使用之在阿里函数计算中,设置单实例并发1如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
186 6
Serverless 应用引擎产品使用之在阿里函数计算中,设置单实例并发1如何解决
|
6月前
|
监控 关系型数据库 Serverless
PolarDB产品使用合集之serverless监控指标中如何监测某个节点的负载或资源占用情况
PolarDB是阿里云推出的一种云原生数据库服务,专为云设计,提供兼容MySQL、PostgreSQL的高性能、低成本、弹性可扩展的数据库解决方案,可以有效地管理和优化PolarDB实例,确保数据库服务的稳定、高效运行。以下是使用PolarDB产品的一些建议和最佳实践合集。
|
关系型数据库 Serverless 分布式数据库
PolarDB的Serverless模式可以根据业务负载的变化
PolarDB的Serverless模式可以根据业务负载的变化
|
缓存 资源调度 Serverless
《Serverless数据库技术研究报告》——三、 Serverless数据库技术趋势——(五)资源快速调度,提升资源利用率
《Serverless数据库技术研究报告》——三、 Serverless数据库技术趋势——(五)资源快速调度,提升资源利用率
123 0

相关产品

  • 云原生数据仓库 AnalyticDB PostgreSQL版
  • 云数据库 RDS PostgreSQL 版
  • 下一篇
    DataWorks