组织调用lambda函数

时间:2019-03-10 11:05:30

标签: amazon-web-services go aws-lambda domain-driven-design microservices

我已经将订单微服务编写为go AWS lambda函数。

绑定到API网关的名为order-service的主要功能。它接收几个参数,例如int的user_id:int, product_ids:array,创建带有工件的订单,并返回带有order_id和总价的序列化订单。 该函数调用一个名为order-item的函数,该函数创建一个订单项并并行返回(每个产品)。这些功能调用产品和用户功能,以通过其ID检索有关用户和产品的信息。 然后,订单函数调用另一个称为费用函数的lambda,该lambda仅获取总价和用户标识并返还费用价。当然,它会调用其他功能,例如用户功能等等。基本上,这是服务一般工作方式的简单示例。任何功能都可以调用其他功能,例如用户折扣,州税等。

问题是:

  1. 订购功能通过Amazon调用费用功能是否很好,但是它可以导入费用处理程序包并在其内部运行?(但是,费用功能可以从外部调用,因此也必须作为单独的功能进行部署)
  2. 每个函数仅接收用户ID并加载调用用户函数的用户是否很好?也许更好地预加载它并传递到任何地方?还有吗?
  3. 一个功能调用其他功能,然后又调用其他功能,依此类推,这很好吗?我的情况下有更好的方法吗?使用SNS,Step函数,依赖项注入/ aws层。

我问的主要原因是承受数千RPM而不支付很多费用。

感谢您的帮助。我很欣赏这个。

1 个答案:

答案 0 :(得分:1)

这正是创建步进功能的目的。您可以像从Lambda一样从API Gateway调用Step Functions状态机。

使用步进功能,您可以:

  • 使用参数调用状态机
  • 安排Lambda函数的调用顺序
  • 使用状态存储每个lambda的输入和输出
  • 让决策点根据上一个函数的输出采用不同的路径

有关该服务的详细介绍,请参见AWS Step Functions Getting Started Guide