【发布时间】:2020-07-20 22:02:12
【问题描述】:
我们正在建立新项目。我们的要求是调用多个 REST API 并聚合响应并将其发送回移动客户端。
我们正在为我们的体验层探索这两个选项(集成) 1. 逻辑应用 2.Azure函数
我们观察到这两者在性能方面的一个主要差异。
我们通过简单的用例来比较性能。
我们只是调用了一个 REST API 来获取一些具有不同可用选项的指标
- 只需与 APIM 集成作为后端服务
- 使用 Azure 函数
- 使用逻辑应用
与其他选项相比,逻辑应用的执行时间更长。下面是调用rest api的简单逻辑应用
{
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"GetReferenceData": {
"inputs": {
"headers": {
"Authorization": "@variables('AuthToken')"
},
"method": "GET",
"uri": "url"
},
"runAfter": {
"Initialize_AuthToken": [
"Succeeded"
]
},
"type": "Http"
},
"Initialize_AuthToken": {
"inputs": {
"variables": [
{
"name": "AuthToken",
"type": "string",
"value": "@{triggerOutputs()['headers']?['Access-Token']}"
}
]
},
"runAfter": {},
"type": "InitializeVariable"
},
"Response": {
"inputs": {
"body": "@body('GetReferenceData')",
"statusCode": "@outputs('GetReferenceData')['statusCode']"
},
"kind": "Http",
"runAfter": {
"GetReferenceData": [
"Succeeded"
]
},
"type": "Response"
},
"Response_2": {
"inputs": {
"body": "@body('GetReferenceData')",
"statusCode": "@outputs('GetReferenceData')['statusCode']"
},
"kind": "Http",
"runAfter": {
"GetReferenceData": [
"Failed",
"Skipped",
"TimedOut"
]
},
"type": "Response"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {
"storageLocation": {
"defaultValue": [],
"type": "Array"
}
},
"triggers": {
"manual": {
"inputs": {
"method": "GET",
"relativePath": "/referenceData",
"schema": {}
},
"kind": "Http",
"type": "Request"
}
}
},
"parameters": {}
}
我们有很多用例,需要调用多个 REST API 并聚合结果。有了上面的数字,Function App 的表现似乎比 Function App 做得更好。对于并行操作,我可能依赖于持久函数而不是 Logic 应用。
所以我只是想了解为什么逻辑应用程序需要更长的时间,几乎是类似操作的功能的两倍?
逻辑应用是否不适用于这些操作?
【问题讨论】:
-
我看不出逻辑应用程序和确定功能之间的时间差异很大,只有几百毫秒,您打算集成什么样的负载和系统?给我们一些想法,以便我们提出建议东西
-
两种方法都有冷启动。如果对 Azure Functions 使用高级计划,可以获得更好的结果。 PS:看看Durable Functions(扇入和扇出模式)。它会让您的生活更轻松。
-
我们从逻辑应用开始,因为它的功能(易于集成、开箱即用的异常处理、重试等...)。但是当我们对函数执行相同的操作时,我们会看到更好的性能。当然毫秒也很重要。如果我们开始使用越来越多的 API,它可能会使用多个。我假设 Logic 应用程序的结果是由于其设计
标签: azure azure-functions azure-logic-apps azure-api-management