AWS Lambda 与 EC2:选择哪一个

Rah*_*ngh 4 amazon-ec2 amazon-web-services aws-lambda aws-api-gateway

我正在尝试将部署在 EC22 上的登录服务设为无服务器。但我不确定通过 AWS API Gateway 公开的 AWS Lambda 或无服务器是否适合登录用例,成功登录后会返回accesstoken.

这是该微服务的唯一职责。

而且我不确定 Lambda 对负载测试和大量 http 请求的表现如何。

而且,我们还需要低响应时间。

您能否让我知道 Lambda 如何扩展以及这是正确的用例吗?

Mau*_*ice 5

根据评论中的讨论,我现在为此添加一个完整的答案,因为这并不适合发表评论。

您提到您当前的服务已经在 EC2 上运行,并且您希望将其转移到无服务器解决方案。此外,您提到了“通过 API 网关公开的 Lambda 或无服务器”选项。然后添加一些关于预期响应时间为 500 毫秒和 Lambda 执行 2 次 DynamoDB 调用的附加信息。

我将按顺序解决这些问题:

EC2 与无服务器解决方案:

您似乎已经决定尝试无服务器路由,原则上它对于您所描述的微服务类型架构非常有效。我不会在这里过多关注 EC2 解决方案的优点。无服务器可以带来以下好处(除其他外):

  • 成本效益:您只需为代码在运行时消耗的资源而不是空闲时间付费
  • 可扩展性:Lambda 可水平、快速且轻松地扩展——您基本上不用担心(最多 1000 个并行“实例”)
  • 降低运营开销:无需修补操作系统 - AWS 会为您处理这些问题
  • 专注于您的业务逻辑,将管理基础设施的繁重工作交给 AWS

通过 API 网关公开的 Lambda 或无服务器

无服务器并不是真正的 AWS 服务,而是一种范式或架构模式,因此这些选项并不完全有意义 - 只要发生事件(读取:HTTP 请求),您就可以使用 API 网关来触发 Lambda 函数。这意味着您将设置一个完全托管的 REST 端点 (API-Gateway) 来按需调用您的代码 (Lambda)。

关于性能

对于您所描述的用例而言,500 毫秒的响应时间是现实的 - DynamoDB 公布了一位数毫秒的延迟,因此在 500 毫秒内对其进行两次调用应该不成问题。不幸的是,Lambda 冷启动是一回事。Lambda 通过并行请求进行横向扩展,这意味着如果您的函数没有足够的热实例来满足您的请求,则会预配新的 Micro-VM。这需要时间,但在您的用例中这应该不是问题,因为您不需要访问 VPC(在这种情况下需要几秒钟)。

与 EC2 实例相比,Lambda 的性能有限,您可以通过指定函数分配的 RAM 量来扩展 Lambda 提供的性能量(CPU 资源根据 RAM 提供)。对于一个简单的登录服务,这也不应该是一个问题。

我建议您阅读我在 Lambda 文档中提到的要点(非常好)。


Rag*_*eti 0

如果您希望使用 AWS Lambda 托管事件驱动服务,您只需提供所需语言的代码,然后 Amazon AWS 会完成剩下的工作。如果您想根据自己的需求进行自定义并使用您喜欢的任何编码语言,Amazon EC2 可以提供灵活性和一系列可供选择的 EC2 实例类型,并结合 Elastic Beanstalk 服务部署到 Amazon EC2 上。

AWS Lambda 是一项用于运行代码以响应事件(例如 Amazon S3 存储桶和 Amazon DynamoDB 表中的数据更改)的服务,或者作为计算服务运行代码以响应使用 Amazon API gateway 或由 Amazon API 发出的 API 调用的 HTTP 请求。使用 AWS 开发工具包。对于在标准运行时环境中运行的应用程序来说,这是一个理想的计算平台。

Lambda 应该是你最好的选择。