具有无服务器(Lambda或功能)的微服务

时间:2018-07-03 08:30:31

标签: azure lambda microservices azure-functions

我对将当前的微服务系统迁移到无服务器的想法感到担忧。

现在,服务之间正在使用基于HTTP或API的通信。 像lambda或function之类的无服务器可以通过函数调用或lambda调用相互通信。通过将所有服务中的所有HTTP代码都更改为lambda调用,可以完成这种方式。

另一种方法仍然是使用HTTP请求通过API网关调用lambda上的另一个服务。这种调用方法不好,因为服务请求进入了Internet,然后又回到API网关,然后邻居服务得到了请求。时间太长,对我来说没有意义。

如果lambda应用程序使用本地网络HTTP请求调用另一个lambda应用程序,我将感到很高兴,这仍在我的研究中。

我想从你们所有人那里了解您在将基于服务之间的HTTP通信的微服务迁移到Lambda或Functions之类的无服务器方面的经验?

您是否将所有代码都更改为特定的lambda函数调用? 您是否再次使用HTTP over Internet和API Gateway来调用邻居服务? 你们在本地/专用网络lambda呼叫中解决了吗?

谢谢

2 个答案:

答案 0 :(得分:2)

我是否纠正您在谈论微服务/功能的编排?

如果是,您是否看过AWS Step FunctionsDurable Functions on Azure

AWS步骤功能

  

AWS Step Functions使您可以将多个AWS服务协调到无服务器工作流中,从而可以快速构建和更新应用程序。使用Step Functions,您可以设计和运行将AWS Lambda和Amazon ECS之类的服务组合到功能丰富的应用程序中的工作流。工作流由一系列步骤组成,一个步骤的输出充当下一个步骤的输入。使用“步骤功能”可以简化应用程序的开发,因为它可以将您的工作流程转换为易于理解,易于向他人解释以及易于更改的状态机图。您可以监视执行过程中的每个步骤,这意味着您可以快速发现并解决问题。步骤功能会自动触发并跟踪每个步骤,并在出现错误时重试,因此您的应用程序将按预期顺序执行。

来源:https://aws.amazon.com/step-functions/

持久耐用的功能

  

持久功能的主要用例是简化无服务器应用程序中复杂的,有状态的协调问题。以下各节描述了一些可以从持久功能中受益的典型应用程序模式:函数链接,扇出/扇入,异步HTTP API,监视。

来源:https://docs.microsoft.com/en-us/azure/azure-functions/durable-functions-overview

答案 1 :(得分:0)

您应该考虑使用队列进行通信。一个功能完成时,它将结果放入Azure存储队列中,由另一个功能拾取。因此,除非有必要触发另一个功能,否则功能之间不会直接通信。

换句话说,它可能看起来像这样

  

function1 ==> queue1 <== function2 ==> queue2 <== function 3 ==>其他地方,例如存储