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

简介: 本文将对AnalyticDB PostgreSQL产品的计划任务管理功能以及其背后的实现机制和最佳实践做详细介绍。

背景

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


实现方案

整体架构

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

1.png

计划任务管理

计划任务模型

2.png

指定时间计划

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

周期执行计划

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


计划任务调度

3.png

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

计划任务状态机

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

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

4.png

计划任务带来的挑战

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

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


如何保证计划按时执行

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

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


如何保证计划成功率

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


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

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


最佳实践

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

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

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


创建指定时间计划

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

5.png

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

6.png

创建周期执行计划

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

7.png

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

8.png

编辑计划任务

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

9.png

10.png

11.png

禁用计划任务

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

12.png

13.png

启用计划任务

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

14.png

15.png

删除计划任务

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

16.png

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

17.png

查看时间变更记录

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

18.png

结束语

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

相关实践学习
使用CLup和iSCSI共享盘快速体验PolarDB for PostgtreSQL
在Clup云管控平台中快速体验创建与管理在iSCSI共享盘上的PolarDB for PostgtreSQL。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
3月前
|
SQL 运维 关系型数据库
基于AnalyticDB PostgreSQL的实时物化视图研发实践
AnalyticDB PostgreSQL企业数据智能平台是构建数据智能的全流程平台,提供可视化实时任务开发 + 实时数据洞察,让您轻松平移离线任务,使用SQL和简单配置即可完成整个实时数仓的搭建。
367 1
|
4月前
|
关系型数据库 测试技术 Serverless
【PolarDB Serverless】资源伸缩&压测 TPC-C 测评
【PolarDB Serverless】资源伸缩&压测 TPC-C 测评
155976 31
【PolarDB Serverless】资源伸缩&压测 TPC-C 测评
|
7月前
|
监控 Cloud Native 关系型数据库
如何实现AnalyticDB MySQL版弹性能力
云原生数据仓库AnalyticDB MySQL版具备灵活弹性的特性,可应对大量客户并发访问时的流量峰值。
273 2
|
1月前
|
关系型数据库 MySQL OLAP
PolarDB +AnalyticDB Zero-ETL :免费同步数据到ADB,享受数据流通新体验
Zero-ETL是阿里云瑶池数据库提供的服务,旨在简化传统ETL流程的复杂性和成本,提高数据实时性。降低数据同步成本,允许用户快速在AnalyticDB中对PolarDB数据进行分析,降低了30%的数据接入成本,提升了60%的建仓效率。 Zero-ETL特性包括免费的PolarDB MySQL联邦分析和PolarDB-X元数据自动同步,提供一体化的事务处理和数据分析,并能整合多个数据源。用户只需简单配置即可实现数据同步和实时分析。
|
1月前
|
关系型数据库 PostgreSQL
postgresql日程排程函数的编写实例
postgresql日程排程函数的编写实例
|
7月前
|
关系型数据库 OLAP 数据库
如何克隆AnalyticDB PostgreSQL实例
AnalyticDB PostgreSQL版支持基于已有实例,快速克隆出一个完全相同的实例。
271 0
|
4月前
|
关系型数据库 OLAP 数据库连接
AnalyticDB PostgreSQL版目前不支持使用外部数据包装器
AnalyticDB PostgreSQL版目前不支持使用外部数据包装器
85 3
|
4月前
|
关系型数据库 Serverless 分布式数据库
针对PolarDB的Serverless能力从资源弹升速度、资源伸缩广度以及资源伸缩的稳定性三个维度的产品测评
针对PolarDB的Serverless能力从资源弹升速度、资源伸缩广度以及资源伸缩的稳定性三个维度的产品测评
204 0
|
4月前
|
SQL 关系型数据库 C语言
PostgreSQL【应用 03】Docker部署的PostgreSQL扩展SQL之C语言函数(编写、编译、载入)计算向量余弦距离实例分享
PostgreSQL【应用 03】Docker部署的PostgreSQL扩展SQL之C语言函数(编写、编译、载入)计算向量余弦距离实例分享
45 0
|
4月前
|
SQL 关系型数据库 数据库
PostgreSQL【应用 02】扩展SQL之C语言函数(编写、编译、载入)实例分享
PostgreSQL【应用 02】扩展SQL之C语言函数(编写、编译、载入)实例分享
49 0

热门文章

最新文章

相关产品

  • 云原生数据仓库AnalyticDB MySQL版
  • 云原生数据仓库 AnalyticDB PostgreSQL版