AWS 调度程序/Linux cron

问题描述 投票:0回答:1

我们正在为我们的服务创建一个计划程序,该计划程序在每个特定的时间段(未确定,可能是 20-30 分钟)运行来扫描数据库。我们的应用程序位于带有 .Net Core 的 Amazon Linux 中。

我们想要使用AWS EventBridge Scheduler,它需要为EventBridge Schduler设置一个目标,我们想要使用lambda函数,但是lambda函数有15分钟的时间限制。随着数据的增长,数据库任务可能会超过15分钟,我们不希望AWS强行停止任务。 Python编写的lambda函数(无论python还是net core)。

问题是,

  1. 是否有 lambda 函数只关心调用 API,我们不希望真正的数据库任务函数执行时间影响 lambda 函数执行时间。
  2. AWS 架构中是否有其他设计可以满足此要求?
  3. 我们还可以为该任务设置 linux cron,这比在 AWS 中设置更好吗?

非常感谢您的帮助!

linux amazon-web-services aws-lambda cron-task
1个回答
0
投票

以下是一些注意事项和选项:

->解耦API调用和数据库任务:

  • 一种方法是将调用 API 的 Lambda 函数与 实际的数据库任务。
  • EventBridge 触发的 Lambda 函数可以是轻量级的,仅负责通过对更强大的后端进行 API 调用来启动流程。

->AWS Step Functions 非常适合管理涉及多个步骤且具有长时间运行任务的工作流程。您可以创建一个 Step Function 来协调不同 Lambda 函数的执行,从而允许超过 15 分钟的总执行时间。

->批处理:

  • 如果您的数据库任务涉及处理大量数据, 考虑使用 AWS Batch。

  • AWS Batch 专为运行大规模并行批处理计算工作负载而设计。

->ECS/Fargate:

  • 基于容器的解决方案(例如 Amazon ECS 或 AWS Fargate)可能是 适合长时间运行的任务。
  • 您可以创建一个容器化应用程序来处理数据库任务并使用 ECS 或 Fargate 安排其执行。

->EC2 上的 Linux Cron:

  • 如果您习惯于管理自己的基础设施,那么在 Amazon EC2 实例上使用 Linux Cron 可能是一个简单的解决方案。您可以使用 cron 安排 .NET Core 应用程序定期运行。

->EventBridge 触发外部系统的规则:

  • 您可以使用 EventBridge 触发负责执行数据库任务的外部系统(例如 EC2 实例或容器)。该外部系统没有与 Lambda 相同的时间限制。

->数据库作业调度程序:

  • 根据您的数据库系统,它可能有自己的作业调度功能。例如,您可以直接在数据库中安排任务(例如,使用 SQL Server 数据库代理)。

选择最适合您的应用程序架构、部署首选项和操作功能的选项。 使用 Step Functions 或批处理可能非常适合您的场景,使您能够协调和管理长时间运行的任务。

© www.soinside.com 2019 - 2024. All rights reserved.