Azure Functions介绍
- Azure无服架构之一
- 收费模式可以选择Consumption Plan(运行时长不超过5分钟,可通过配置延长至10分钟)。对于Consumption Plan,只会根据调用次数,调用时长,使用内存等因素收费。
- 收费模式也可以选择App Service Plan:可以更长时间运行function,同时使用更多内存。
触发Azure Functions的条件
- HTTP请求 (HTTPTrigger)
- 定时触发 (TimerTrigger)
- BlobTrigger: 当新的文件添加到容器中时触发. 首先创建一个Storage account,在其中创建一个container。之后就可以添加一个function app,监测container中文件的变化。
- Cosmos DB 中documents,Azure Storage blobs, Azure Queue storage消息中数据的变化
- Azure Event Grid中的事件
- Azure Event Hubs中的事件
- Azure Service Bus中queue/topic中的消息
创建一个Function service
- 创建Function App
- 选择App Service Plan
- 选择/创建Storage account
- 勾选Application Insights
Output binding
可以将BlobTrigger/QueueTrigger看作是input binding。
同时也可以定义output binding,可以选择table,queue作为output。
这些可以在funcation.json中定义。
Azure Functions最佳实践
- 避免长时间运行的任务
- Function之间的通讯可以通过队列解决
- Function应该都是无状态的,所有的数据都通过输入、输出传递
Durable Function
使用Durable Function,可以在无状态环境中实现含状态的函数。同时可以直到下个将被执行的函数。
- Durable function是在Azure function的基础上,可以编写stateful function。
- 在Durable function中,可以通过编写orchestrator function, stateful entities,来实现对状态的管理,监测,而开发人员就可以专注于商业逻辑。
- 可以编写workflow
- 通过durable function,可以将编写workflow的代码和实际实现代码分离,比如fan-in/fan-out模式(Fan-out/fan-in refers to the pattern of executing multiple functions concurrently and then performing some aggregation on the results)。
Durable Function的应用场景:
- Chaining:一个函数的输出是另一个函数的输入
- Fan-out/fan-in:等待多个并行函数的同时结束,然后再进入下一步
- async HTTP APIs: Azure有内置API,以方便调用需要长时间运行的函数
- 需要人工干预的工作流
添加一个Durable Function分为三个步骤:
- 创建Durable Functions HTTP starter, 这是durable function的入口
- 创建Durable Functions Orchestrator,这是流程控制部分
- 创建Durable Functions Activity,这是business logic的实现部分