Serverless 应用如何处理定时任务

阅读时长 6 分钟读完

Serverless 架构正在成为当下云端应用开发的热门选择,它可以让开发者将精力更多地投入到业务逻辑上,而不是管理底层基础架构。在 Serverless 架构中,函数是应用程序的核心,通过事件来调用不同的函数实现各种功能。但对于某些场景,例如需要定时执行某些任务,就需要使用 Serverless 应用中的定时触发器。本篇文章将介绍如何在 Serverless 应用中使用定时触发器处理定时任务。

Serverless 定时触发器

Serverless 定时触发器是一种 Serverless 平台对于用户预先设定时间的调用功能。它是一种模式化的事件触发机制,让用户能够轻松创建类似 cron 一样的定时任务。在底层的实现上,Serverless 平台内部会基于 cron 表达式或者 CloudWatch Events 规则来创建的定时触发器。

Serverless 应用可以使用的定时触发器支持多种时间表达方式,常见的有 cron 表达式和 ISO 8601 表示法。

cron 表达式

cron 表达式是一种格式化方式的 Schedule 表达式语言,用于在指定时间间隔内触发事件。 在 Serverless 应用中,cron 表达式存储在在函数的服务定义文件 serverless.yml 中。它有以下五个位置参数,每个位置参数需要一个特定的值:

-- -------------------- ---- -------
-     -     -     -     -
-     -     -     -     -
-     -     -     -     -
-     -     -     -     -
-     -     -     -     ------ --- -- --- ---- -- - -- ------- -- --------- - -- ---- ------ -- ---- --------
-     -     -     ----------- ----- -- - ---
-     -     ---------------- --- -- --- ----- -- - ---
-     --------------------- ---- -- - ---
-------------------------- ------ -- - ---
展开代码

到了定时触发器被触发时,Serverless 平台会将其通知到一个 REST API 端点上,所以需要为应用定义一个 API 网关和一个端点,在应用中处理定时任务。

以下是 Serverless 应用可以处理定时任务的方法:

使用 AWS Lambda

AWS Lambda 是运行在 Amazon Web Services 的 Serverless 服务,实现使用 Lambda 的 Serverless 应用可以通过 AWS CloudWatch 事件触发器定期执行。CloudWatch 事件的定时触发器可以基于分钟或者月份或者每年的某一天或者星期计算。Lambda 还支持 API 网关,以便能够通过 API 请求触发Lambda 函数。

以下是一个定时调用 Lambda 函数的 serverless 配置示例:

-- -------------------- ---- -------
- --------------
-------- ----------
---------
  ----- ---
  -------- ----------
----------
  ------------
    -------- ------------
    -------
      - --------- ------ ----
展开代码

使用 Alibaba Cloud 函数计算

阿里云函数计算是一种快速、简便的 Serverless 服务。它支持在不进行服务器管理和运维的情况下运行您的应用程序代码,从而减少了操作成本。你可以通过函数计算控制台配置定时触发器,根据 Cron 表达式(使用 UTC 时间)为函数计算创建任务。函数计算还支持 API 网关,以便通过 API 请求触发函数。

以下是一个定时调用函数计算的 serverless 配置示例:

-- -------------------- ---- -------
- --------------
-------- ----------
---------
  ----- ------
  -------- -----------
----------
  ------
    -------- -----------
    -------
      - ------
           --------------- -- -- - - - --
展开代码

使用 Tencent Cloud 云函数

腾讯云函数计算是一种无管理的 Serverless 计算服务,让您无需管理服务器即可运行您的代码。腾讯云函数计算可从 HTTP、API Gateway、SCF 等接口进行触发,也可以基于定时触发器定时触发云函数。

以下是一个定时调用腾讯云函数的 serverless 配置示例:

-- -------------------- ---- -------
- --------------
-------- ----------
---------
  ----- -------
  -------- -----------
----------
  ------
    -------- ------------------
    -------
      - ------
          --------------- -- - - - - --
展开代码

示例代码

以下是一个使用 Serverless 应用创建定时任务的示例代码。

Serverless 应用的 serverless.yml 配置文件:

-- -------------------- ---- -------
-------- ------------

---------
  ----- ---
  -------- ----------
  ------- ---------

----------
  -----
    -------- -------------
    -------
      - --------- ------ --- - - - --
展开代码

配置文件中设定了一个每六个小时调用一次的定时任务。

总结

使用 Serverless 应用处理定时任务可以让开发者使用自己熟悉的框架和语言,从而提高开发效率。在 Serverless 应用中使用定时触发器处理定时任务需要定义好时间计划表达式,并在应用中定义 API Gateway 和处理任务的函数。无论采用 AWS Lambda、Alibaba Cloud 函数计算还是 Tencent Cloud 云函数,都需要使用定时触发器的方式来处理定时任务。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646b0a0b968c7c53b0a7b9ba

纠错
反馈

纠错反馈