什么是 MS Azure Functions?

17 Mar 2025 | 5 分钟阅读

为了编写更少的代码,管理更少的基础设施,并节省成本,我们可以使用 Azure Functions,这是一个无服务器计算平台。云架构提供运行应用程序所需的所有当前资源,而无需担心建立和管理服务器。

Azure Functions 负责处理其他一切,我们只需专注于对我们最重要的代码。

我们经常设计系统来响应一系列关键事件。每个应用程序,无论是创建 Web API、响应数据库更新、处理 IoT 数据流,还是仅仅维护消息队列,都需要一种在事件发生时运行代码的方式。

根据需要,Azure Functions 以两种方式提供“按需计算”。

首先,Azure Functions 使您能够将系统的逻辑转化为易于访问的代码块。这些代码块称为“函数”。当您需要响应关键事件时,可以随时激活各种函数。

其次,随着需求的增长,Azure Functions 会扩展以提供所需的任意数量的资源和函数实例——但仅在需要时。随着需求的减少,任何剩余的资源和应用程序实例都会立即退役。

所有计算资源的来源是什么?Azure Functions 可以根据应用程序的需求提供任意数量的计算资源。

Azure Functions 中的按需计算资源配置定义了无服务器计算。

场景

一个函数可以与各种云服务接口,以在各种场景中提供功能丰富的实现。

下面列出的场景是一组常见的 Azure Functions 场景,但并非详尽无遗。

如果您想...然后...
构建 Web API使用 HTTP 触发器,为您的 Web 应用程序创建终结点。
处理文件上传当 Blob 存储中的文件被上传或更新时,运行代码。
构建无服务器工作流使用 Durable Functions,将多个函数链接在一起。
响应数据库更改当 Cosmos DB 中的文档被创建或修改时,运行自定义逻辑。
运行计划任务在预定时间间隔运行代码。
创建可靠的消息队列系统队列存储、服务总线或事件中心都可以用于处理消息队列。
分析 IoT 数据流收集和处理来自 IoT 设备的数据。
实时处理数据使用 SignalR 和 Functions 实时响应数据。

开发函数时,您可以使用以下选项和资源:

  • 使用您喜欢的语言:使用 C#、Java、JavaScript、PowerShell 或 Python 创建函数,或者创建自定义处理程序来使用任何语言。
  • 自动化部署:有多种部署选项可用,从基于工具的方法到使用外部管道。
  • 对函数进行故障排除:为了深入了解您的应用程序,请使用监控工具和测试方法。
  • 灵活的定价选项:使用消耗计划时,您只需为正在运行的函数付费,而 Premium 和 App Service 计划则提供用于特定用途的功能。

Azure Functions 使您能够将系统的逻辑转化为易于访问的代码块。“函数”是这些代码块的名称。

“Durable Functions”是什么意思?

Durable Functions 是 Azure Functions 的无服务器计算扩展,允许您构建有状态函数。使用 Azure Functions 编程模型,您可以创建有状态工作流,方法是编写协调器函数和有状态实体,方法是编写实体函数。

支持的语言

Durable Functions 目前支持以下语言:

  • C#:提供预编译类库和 C# 脚本。
  • JavaScript:仅支持 Azure Functions 运行时版本 2.x。需要 Durable Functions 扩展版本 1.7.0 或更高版本。
  • Python:需要 Durable Functions 扩展版本 2.3.1 或更高版本。
  • F#:F# 脚本和预编译类库。Azure Functions 运行时版本 1.x 仅支持 F# 脚本。
  • PowerShell:Durable Functions 支持目前处于公共预览阶段。需要 Durable Functions 扩展版本 2.2.2 或更高版本。目前仅支持以下模式:异步 HTTP API、函数链、扇出/扇入。

应用程序模式

Durable Functions 的主要目的是简化无服务器系统中复杂、有状态的协调要求。Durable Functions 在典型应用程序模式中提供的优势包括:

  • 聚合器(有状态实体)
  • 扇出/扇入
  • 异步 HTTP API
  • 函数链
  • 监控
  • 人工交互

模式:函数链

在函数链模式中,一系列函数按特定顺序执行。这样,一个函数的输出应用于另一个函数的输入。

What is MS Azure Functions

如以下示例所示,我们可以利用 Durable Functions 快速实现函数链模式。

本例中的 F1、F2、F3 和 F4 是同一函数应用中其他函数的名称。可以使用标准的命令式编码构造来实现控制流。代码执行从顶部开始,然后向下进行。我们甚至可以在编写代码时根据需要使用条件语句和不同的循环语句。在 try/catch/finally 块中,我们还可以结合错误处理逻辑。

模式:扇出/扇入

在扇出/扇入模式中,您可以并行运行多个函数,然后等待它们全部完成。通常会根据函数提供的结果执行一些聚合工作。

What is MS Azure Functions

您可以让标准函数通过向队列发送多个消息来实现扇出。返回到原始位置要困难得多。要实现扇入,您可以编写代码来跟踪何时完成队列触发的函数,然后将函数输出存储在常规函数中。

F2 函数的扇出任务分布在多个实例中。动态任务列表用于跟踪作业。Task。调用 Task.WhenAll 时,它会等待所有已调用的函数完成。然后,F2 函数的结果会从动态任务列表中合并并提供给 F3 函数。

调用 Task.WhenAll 时会发生自动检查点。Task.WhenAll 确保了任务中的潜在崩溃或重启不会导致任务被重新启动。

模式:异步 HTTP API

这种模式解决了外部客户端面临的长时运行活动状态协调的一个非常重要的问题。HTTP 终结点是实现此模式的常用方法,方法是触发长时运行的活动。然后将客户端重定向到一个状态终结点,客户端会轮询该终结点以确定何时完成进程。

What is MS Azure Functions

Durable Functions 内置对此模式的支持,使其更容易与长时运行的函数执行进行交互,甚至无需编写代码。

Durable Functions 运行时甚至为我们管理状态,因此我们无需创建自己的状态跟踪方法。

Durable Functions 扩展通过公开内置的 HTTP API 来管理长时运行的编排。例如,可以使用队列消息来启动终止。


下一个主题什么是 ETL