Java 上的无服务器架构:AWS Lambda 及后端替代方案

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Java 上的无服务器架构:为何它并不可怕,甚至更有利?

\n\n

当听到“无服务器”时,第一反应往往是 Node.js 或 Python。Java 看起来像个“启动慢”、“内存占用高”的庞然大物。但让我们面对现实:Java 仍然是企业级标准,而现代的无服务器架构不仅仅是“运行一个函数然后忘记它”。它是一种架构,如果运用得当,可以为你节省大量资金和精力。

\n\n

在本文中,我们将以 AWS Lambda 为例,探讨如何编写 Java 无服务器函数,并介绍替代方案:Google Cloud Functions、Azure Functions 和 Vercel 平台。您将了解 Java 开发者在无服务器世界中会遇到哪些陷阱,以及如何规避它们。我们开始吧!

\n\n

什么是无服务器架构,为什么选择 Java?

\n\n

无服务器架构(或 FaaS——函数即服务) 是一种云计算模型,您编写代码并将其上传到云端,由云服务商自行决定何时以及如何运行它。您只需为实际执行时间和请求次数付费。无需管理服务器,无需管理基础设施。

\n\n

为什么选择 Java?原因如下:

\n
    \n
  • 稳定性和成熟度。 Java 凭借其强类型系统和久经考验的库,非常适合企业级任务。
  • \n
  • 性能。 现代 JVM(尤其是 GraalVM)可以将冷启动时间缩短到毫秒级。
  • \n
  • 生态系统。 Spring Boot、Micronaut、Quarkus——所有这些都已适配无服务器架构。
  • \n
\n\n

但有一个问题:Java 的“冷启动”可能比 Python 或 Go 更长。不过,使用正确的工具可以解决这个问题。

\n\n

AWS Lambda:Java 无服务器市场的主要参与者

\n\n

AWS Lambda 可以说是最流行的无服务器函数服务。它原生支持 Java,并提供两种路径:经典的 Java 8/11/17 和 SnapStart(一种使冷启动几乎不可见的技术)。

\n\n

编写第一个 Java Lambda 函数

\n\n

让我们创建一个简单的函数,通过 Amazon API Gateway 处理 HTTP 请求。为此,我们需要一个 Maven 项目和几个依赖项。

\n\n

步骤 1. 创建一个包含以下 pom.xml 的 Maven 项目:

\n\n
<?xml version="1.0" encoding="UTF-8"?>\n<project xmlns="http://maven.apache.org/POM/4.0.0"\n         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0\n         http://maven.apache.org/xsd/maven-4.0.0.xsd">\n    <modelVersion>4.0.0</modelVersion>\n\n    <groupId>com.pythonlib</groupId>\n    <artifactId>serverless-java</artifactId>\n    <version>1.0-SNAPSHOT</version>\n\n    <dependencies>\n        <dependency>\n            <groupId>com.amazonaws</groupId>\n            <artifactId>aws-lambda-java-core</artifactId>\n            <version>1.2.2</version>\n        </dependency>\n        <dependency>\n            <groupId>com.amazonaws</groupId>\n            <artifactId>aws-lambda-java-events</artifactId>\n            <version>3.11.3</version>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-shade-plugin</artifactId>\n                <version>3.2.4</version>\n                <executions>\n                    <execution>\n                        <phase>package</phase>\n                        <goals><goal>shade</goal></goals>\n                    </execution>\n                </execution                

博客

书籍推荐