优势:
- 更容易在 Azure 环境中编写和部署。
- 无需担心服务器基础设施、运行时等。
- 具有高度可扩展性。当需求增加时,将自动分配所需的资源,当需求下降时,额外的资源将自动减少。
- 非常轻量级且无服务器。
- 基于事件触发功能。
- 由不同的 Azure 安全服务(如 Azure 活动目录)支持。
- 执行起来很快,因为在执行代码之前不需要使用大型应用、启动时间、初始化和其他事件。
- 支持多种编程语言,包括 C#、F#、Java、JavaScript、TypeScript 和 Python。
- 可以使用浏览器在 Azure 门户中构建、测试和部署。
- 使用Visual Studio,开发人员可以使用 Azure 存储模拟器在本地测试。
无服务器函数架构
无服务器架构将代码与其托管环境分开,允许用户定义调用函数的触发器,可以是手动的,也可以是自动的。执行的结果就是代码的执行。此外,大多数无服务器平台都提供对预定义API和绑定的访问,以简化数据库写入或对结果进行排队等任务。
WebJobs Core 为函数提供了一个执行上下文和执行函数的平台。Language Runtime负责运行脚本、执行库和托管目标语言的框架。例如,Node.js 用于运行 JavaScript 函数,.NET Framework 用于运行 C# 函数。
无服务器架构模式
1.用于 Web 应用程序和移动设备
零售场景的Web 应用程序后端用于从队列中提取在线订单并处理。结果数据存储在数据库中。
例子:
数据可以映射到 Cosmos DB 或保存到 Blob 存储,具体取决于数据是结构化的还是非结构化的。
2.文件的实时处理和批处理
实时文件处理,如生成即时发票和连续计算收入。可以使用OCR检测对文件进行处理,并将其添加到数据库中以便于查询。
例子:
3.实时流处理独立软件供应商(ISV)场景
一种近乎实时的数据,比如由“空气质量传感器”生成的数据,用于确定空气质量类别。
例子:
Serverless 架构并不适合所有用例,在某些情况下它可能并不合适:
- 共享代码/逻辑
- 分布式Monoliths
- 复杂加工
- 无服务器大数据 ETL 管道
- 长处理任务
- 异步调用
结论
Microsoft Azure 提供多种无服务器服务,可帮助客户快速构建应用程序。Azure Functions 在构建、测试和部署低延迟应用程序方面发挥着关键作用。Azure 具有高可扩展性和可用性。在不涉及任何 Web 服务器的情况下直接在 Azure Blob 存储上托管单页应用程序是很容易的。成本控制(PAAS)的主要好处是,与物理托管在数据中的服务器相比,可以缓慢地交付服务。Azure Functions、SQL 和逻辑应用是用于设计容错应用程序的最常见且使用率最高的无服务器服务。