AWS Lambda Durable Functions:首次印象

发布: (2026年3月4日 GMT+8 10:06)
7 分钟阅读
原文: Dev.to

Source: Dev.to

无服务器架构是一个持续增长的话题,尤其是当我们谈论 Amazon Web Services 时。近年来,该平台推出了一系列旨在实现可扩展性、弹性和降低运维复杂性的创新,使团队能够越来越专注于业务逻辑。

长期以来,无服务器模型的主要限制之一与函数的最大执行时间有关。对于 AWS Lambda,这一限制始终是 15 分钟,这自然限制了可以直接通过函数解决的问题类型。

在最近几个月,AWS 开始更成熟地探索一个在其他平台上已经熟知的概念:持久编排。在本文中,我使用术语 Durable Functions 来指代一种架构模式(而非特定服务),它允许在 Lambda 上构建长期工作流,能够延伸至数天、数月甚至一年,而无需任何函数保持持续运行。

可持久编排解决的问题

在传统工作流中,执行是连续进行的,并且直接受限于函数的生命周期。这对短任务来说运行良好,但在需要更多控制和更长处理时间的场景下会成为障碍,例如:

  • 长时间运行的数据管道;
  • 涉及多个外部集成的流程;
  • 依赖人工交互的过程;
  • 与人工智能和机器学习相关的工作负载。

为满足此类需求,Durable Functions 模式引入了 基于事件的编排执行持久化状态 概念。实际上,这意味着一个过程可以前进、暂停、等待外部事件,然后在以后继续执行,并始终保留其上下文。

重要提示: Lambda 函数 不会在整个期间持续运行。可持久的是 工作流,而不是连续的执行。

如何在实践中实现持久化编排

该模式的运行基于无服务器生态系统的几个核心支柱:

  • 短小且幂等的执行;
  • 将状态持久化在函数之外;
  • 通过事件进行通信。

流程的每一步都由事件触发,执行结束后函数会持久化后续流程所需的状态。编排的唯一标识符确保在收到新事件时,流程能够准确地从正确的位置继续执行。

这些事件可以由以下来源发出:

  • 应用程序本身;
  • 其他服务;
  • 或者甚至是外部用户,例如在手动审批场景中。

这种方法能够构建极其灵活的工作流,同时不违背无服务器模型的前提。

Durable Functions 与 Step Functions

自然会将其与 AWS Step Functions 进行比较。虽然两者都解决编排问题,但主要区别在于 通过代码的控制层级

Durable Functions

  • 完全在代码中定义的工作流;
  • 更高的灵活性和动态性;
  • 与应用程序一起进行工作流的版本管理;
  • 适用于复杂且高度自定义的逻辑。

Step Functions

  • 基于状态的声明式工作流;
  • 出色的可视化和可观测性;
  • 较低的运维复杂度;
  • 是可预测且明确的工作流的理想选择。

Durable Functions 并不取代 Step Functions;它们解决的是一套不同的问题,其中对工作流在代码中进行细粒度控制是必要的。

基于事件的架构

基于事件的执行是从事 serverless 工作的人已经非常熟悉的概念。在持久化编排中,它变得更加核心。

Amazon EventBridge 这样的服务可以完全解耦工作流的各个步骤,而 Amazon DynamoDB 等数据库则可用于持久化执行的状态和元数据。

该模型保证:

  • 高弹性;
  • 发生故障时自动恢复;
  • 几乎无限的可扩展性。

生态系统的演进与未来展望

随着 Lambda 支持的运行时不断演进(截至目前,Durable Functions 仅支持 Python 和 Node.js 语言),以及 boto3 库的持续进步,代码层面的更高级编排模式自然会在 AWS 生态系统中占据越来越多的空间。

随着无服务器应用的成熟,对更长、更可控且更具弹性的工作流的需求也在增长——正是在这种情境下,Durable Functions 的概念得以契合。

结论

Durable Functions 代表了 AWS 无服务器架构演进中的一个重要步骤。它们并不是已经成熟的解决方案的替代品,而是针对需要更高控制、灵活性和更长执行时间的场景的强大替代方案。

了解何时应用此模式(以及何时选择更简单的解决方案)对于充分利用无服务器生态系统至关重要。

来源

0 浏览
Back to Blog

相关文章

阅读更多 »

AI、人类与我们打破的循环

🌅 经验的回响 — 站在地平线 曾经有一段时间,混沌塑造了我。但当我真正选择了自己——真正选择了自己——一切都改变了。我…