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

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 本文将对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

结束语

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

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
7月前
|
SQL 运维 关系型数据库
基于AnalyticDB PostgreSQL的实时物化视图研发实践
AnalyticDB PostgreSQL企业数据智能平台是构建数据智能的全流程平台,提供可视化实时任务开发 + 实时数据洞察,让您轻松平移离线任务,使用SQL和简单配置即可完成整个实时数仓的搭建。
634 1
|
7月前
|
数据采集 监控 OLAP
云数据仓库ADB如何使用数仓版一键诊断功能-前提条件?
云数据仓库ADB如何使用数仓版一键诊断功能-前提条件?
113 0
|
4月前
|
存储 人工智能
|
4月前
|
存储 监控 安全
阿里云数据库(ADB)的多租户秘籍:资源隔离的魔法如何施展?
【8月更文挑战第27天】多租户系统在云计算与大数据领域日益重要,它让不同用户或组织能在共享基础设施上独立运行应用和服务,同时确保资源隔离与安全。ADB(如阿里云数据库)通过资源组及标签实现高效多租户隔离。资源组作为一种软隔离策略,允许为不同租户分配独立的计算和存储资源,并设置资源上限;资源标签则支持更细粒度的硬隔离,可为每个数据库表或查询指定特定标签,确保资源有效分配。此外,ADB还提供了资源监控与告警功能,帮助管理员实时监控并调整资源分配,避免性能瓶颈。这种灵活且高效的资源隔离方案为多租户环境下的数据处理提供了强大支持。
175 0
|
2月前
|
JSON 计算机视觉 数据格式
LangChain-17 FunctionCalling 利用大模型对函数进行回调 扩展大模型的额外的能力 比如实现加减乘除等功能
LangChain-17 FunctionCalling 利用大模型对函数进行回调 扩展大模型的额外的能力 比如实现加减乘除等功能
50 4
|
2月前
|
人工智能 API
LangChain-14 Moderation OpenAI提供的功能:检测内容中是否有违反条例的内容
LangChain-14 Moderation OpenAI提供的功能:检测内容中是否有违反条例的内容
42 2
|
7月前
|
Cloud Native 关系型数据库 OLAP
云原生数据仓库产品使用合集之阿里云云原生数据仓库AnalyticDB PostgreSQL版的重分布时间主要取决的是什么
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
7月前
|
运维 Cloud Native 关系型数据库
云原生数据仓库产品使用合集之原生数据仓库AnalyticDB PostgreSQL版如果是列存表的话, adb支持通过根据某个字段做upsert吗
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
4月前
|
人工智能 自然语言处理 前端开发
LangChain 构建问题之MetaGPT 和 ChatDev 的支持功能差异如何解决
LangChain 构建问题之MetaGPT 和 ChatDev 的支持功能差异如何解决
74 0
|
5月前
|
存储 分布式计算 关系型数据库
从零到一建设数据中台 - 功能组织与实现技术
从零到一建设数据中台 - 功能组织与实现技术
265 0

相关产品

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