Azure Functions
Azure Functions 是一种事件驱动型计算体验,通过它可执行采用所选编程语言编写的代码,而不必担心服务器的问题。得益于按需扩展,绝不为闲置容量付费。
介绍
无服务器计算的介绍
暂时不考虑基础结构,更快地生成应用
无服务器计算的承诺
如果可以将所有时间都花在生成和部署强大应用上,而无需花时间管理服务器,这会有什么不同?由于为你托管了需要运行并缩放应用的基础结构,无服务器计算可做到这一点。将精力集中在业务上。将资源从基础结构管理重定向到创新,使应用更快上市。
什么是无服务器计算?
无服务器计算是服务器、基础结构和操作系统的抽象化。生成无服务器应用时,不需要预配和管理任何服务器,这样便可将注意力从基础结构问题上移开。无服务器计算由云中准实时发生的对事件和触发器的反应驱动。作为完全托管服务,服务器管理和容量规划对开发人员来说不可见,且仅基于消耗的资源或代码运行的实际时间计费。
为什么生成无服务器应用?
-
从完全托管的服务获益
减轻团队管理服务器的负担。通过利用完全托管的服务,专注于商业逻辑并避免繁重的管理任务。通过无服务器体系结构,只需部署代码,它随即就会以高可用性运行。
-
灵活缩放
无服务器计算从零扩展到瞬间(几秒钟内)处理数万个并发函数,可匹配任何工作负载,而无需进行缩放配置 - 它对事件和触发器做出准实时反应。
-
只为使用的资源付费
通过无服务器体系结构,只需为代码运行的时间付费。无服务器计算由事件驱动,一旦由事件触发资源后即会分配这些资源。仅通过次秒级计费方式,对执行代码所用的时间和资源收费。
备注:上面三个是serverless目前的主要卖点,大家的考虑和出发点都差不多,尤其是后面两个。
资料
核心概念
https://serverless.com/framework/docs/providers/azure/guide/intro/
无服务器框架可帮助您使用Azure功能开发和部署无服务器应用程序。 它是一个CLI,提供开箱即用的结构,自动化和最佳实践,使您可以专注于构建由 Functions 和 Events 组成的复杂,事件驱动,无服务器架构。
无服务器框架与其他应用程序框架不同,因为:
- 将代码作为基础设施来管理
- 支持多种语言(Node.js,Python,Java等)
以下是Framework的主要概念以及它们与Azure Functions的关系……
Functions
Function是Azure Function。它是一个独立的部署单元,就像微服务一样。它只是部署在云中的代码,通常用于执行单个作业,例如:
- 将用户保存到数据库
- 处理数据库中的文件
- 执行计划任务
您可以在代码中执行多个作业,但我们不建议您在没有充分理由的情况下执行此操作。关注点分离是最好的,框架旨在帮助您轻松开发和部署Function,以及管理大量Function。
Events
触发Azure Function执行的任何内容都被框架视为Event。 Event是Azure功能上的平台Event,例如:
- HTTP触发器(例如,用于REST API)
- 预定计时器(例如,每5分钟运行一次)
- 服务总线队列触发器(例如来自另一个Function的工作项)
- 物联网/事件中心消息(例如,来自设备或服务的消息)
- Webhook触发(例如,Github项目更新)
- 和更多…
在无服务器框架中为Azure Function定义事件时,框架将自动将其转换为该事件所需的绑定,并配置Function以侦听它。
Services
Service是框架的组织单位。 您可以将其视为项目文件,但您可以为单个应用程序提供多个服务。 您可以在一个名为serverless.yml(或serverless.json或serverless.js)的文件中定义您的Function,触发它们的Event以及Function使用的资源。 它看起来像这样:
# serverless.yml
service: users
functions: # Your "Functions"
usersCreate:
events: # The "Events" that trigger this function
- http: true
x-azure-settings:
name: req
methods:
- post
route: /users/create
usersDelete:
events:
- http: true
x-azure-settings:
name: req
methods:
- delete
route: /users/delete
通过运行无服务器部署与Framework一起部署时,serverless.yml中的所有内容都会立即部署。
Plugins
您可以使用插件覆盖或扩展Framework的功能。 每个serverless.yml都可以包含一个plugins:
属性,可以有多个插件。
# serverless.yml
plugins:
- serverless-plugin-identifier
- serverless-another-plugin
插件是自定义JavaScript代码,用于在无服务器框架内创建新的或扩展现有命令。 无服务器框架只是核心中提供的一组插件。 如果您或您的组织有特定的工作流程,请安装预先编写的插件或编写插件以根据您的需要自定义框架。 外部插件的编写方式与核心插件完全相同。
mapping and routing events from multiple event sources to multiple target systems.