【问题标题】:It is correct to use spring boot with amazon lambda?将弹簧靴与亚马逊 lambda 一起使用是否正确?
【发布时间】:2021-04-25 19:16:16
【问题描述】:

我想要一个允许管理 json 对象、调用 SOAP 服务以及通过一组 lambda 服务上的 Spring 数据访问数据库的解决方案。 但是在网上我读到 lambda 函数应该非常简单。 也许 Spring cloud 是解决方案?

问候

【问题讨论】:

  • 是的,您可以将 Spring Boot 与 AWS lambda 一起使用。

标签: spring-boot aws-lambda spring-data spring-cloud


【解决方案1】:

在我看来,Spring Boot 对于 AWS Lambda 来说并不是一个好的技术选择,但它是可能的。开始使用它的最佳方式是检查 aws-serverless-java-container 中的不同包装器和帮助器。如果你感兴趣的话,还有一个good blog post about Spring Cloud Functions on AWS Lambda

互联网告诉您 Lambda 函数应该很简单,因为这样它们更容易扩展。如果您在 AWS Lambda 之上使用 Spring Boot 创建另一个单体应用程序,那么这不是 AWS Lambda 的用途。

下面我列出了在 AWS Lambda 中使用 Spring Boot 的优点和缺点。可能还有更多,但这些是我首先想到的。

优势

  • 您可以设置一个 API 网关,将代理集成到 AWS Lambda,然后像使用 Spring Boot 一样处理所有 REST 端点。
  • 您不必管理您的实例,因为 AWS Lambda 正在为您做这件事。
  • 只要一个 Lambda 函数实例启动了 Spring Boot 容器,该函数就会以一致的方式响应 Java 预期的性能(至少这是我使用 Java Lambda 函数的经验)。

缺点

  • 更复杂,因为您需要将 API 网关事件映射到 Spring Boot 可以处理的 HTTP 事件。这就是上面提到的包装器已经为您做的事情。
  • Lambda 函数的冷启动时间较长,因为 Spring Boot 太慢而无法像预期的 Lambda 函数那样快速启动。这意味着,当启动新的 Lambda 函数实例时,您的响应时间会出现高峰。如果这是不可接受的,那么不要选择 Spring Boot with AWS Lambda。
  • 您将在没有太多控制的情况下运行多个 Spring Boot 容器,因为 AWS Lambda 会在需要时启动实例。您可以控制实例的最大和最小数量,仅此而已。
  • 由于无法控制的实例数量,从 AWS Lambda 进行 SQL 查询可能会很痛苦。如果您的 Lambda 函数出现峰值,您可能会很快用完连接,因为它会启动越来越多的实例。

话虽如此,我过去使用过 Java Lambda 函数,在后台运行它们进行一些数据处理非常棒。但是,我不相信它们对于像 REST API 这样的“面向客户”端点来说是一个不错的选择(除非您保持最少的 Lambda 实例运行,但您可以质疑 AWS Lambda 是否是您的正确选择)。

【讨论】:

    猜你喜欢
    • 2017-05-17
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 2016-09-16
    • 2021-05-28
    • 2015-02-04
    相关资源
    最近更新 更多