发布于 2026-01-06 2 阅读
0

无服务器架构的终极(入门)指南

无服务器架构的终极(入门)指南

过去几年,我一直在Dashbird与一群非常棒的同事一起工作,我们每天努力改进无服务器技术,为无服务器社区目前面临的问题开发解决方案。我已经撰写了数十篇文章,探讨无服务器技术的优势、问题以及选择它的各种原因,并讲解如何更好地使用它。本文将总结您入门无服务器技术所需的一切知识。

让我们从头开始:

什么是无服务器?

从定义上看,人们通常认为无服务器就是函数即服务 (FaaS)。但这种说法并不完全正确。无服务器远不止于此。它应该被视为一种基于事件的代码运行系统。也就是说,您可以使用各种服务来创建业务逻辑,而无需关心任何服务器。您完全抽象化了基础设施。例如,在 S3 上托管静态网站、使用 DynamoDB 或 Aurora Serverless 等无服务器数据库,以及使用 Lambda 函数在无需管理服务器的情况下运行代码,都是很好的例子。

如果您需要立即检测并处理突发的流量高峰,那么无服务器架构非常适合您。如果完全没有流量,应用程序甚至会完全关闭。您只需为使用的资源付费。没有使用量,就没有费用,非常简单!


图片由Cleveroad.com提供

无服务器服务提供商

以下是一些最流行的无服务器平台,旨在帮助开发者了解当前可用的选项。

1. AWS Lambda

2. 微软 Azure

3. Google App Engine

4. Google Cloud Functions

5. IBM OpenWhisk

想了解各个平台的更多信息,请查看这篇文章。

开始使用无服务器架构

开始使用无服务器架构非常简单。虽然有很多服务提供商可供选择,但为了方便起见,我将重点介绍 AWS 和 AWS Lambda。首先,我会介绍 AWS Lambda 的局限性,这样您就能清楚地了解系统的极限。

函数内存分配:128 MB 至 3,008 MB,以 64 MB 为增量。
函数超时:900 秒(15 分钟)。
函数环境变量:4 KB。
函数资源策略:20 KB。
函数层数:5 层。
函数突发并发数:500 - 3000(因区域而异)。
调用有效负载:6 MB(同步)/ 256 KB(异步)。
部署包大小:50 MB(压缩)或 250 MB(解压缩)。/
tmp 目录存储空间:512 MB。
执行进程/线程数:1,024

既然我们已经解决了这个问题,那就让我们进入下一部分吧。

如何创建一个简单的 Lambda 函数

有两种方法可以实现这一点。一种方法是直接通过 AWS 界面上传代码,这当然可行,但说实话,对于包含多个微服务、每个微服务又包含大量小型函数的大型项目来说,这种方法并不可行。
因此,虽然逐个上传函数勉强可以,但您真正需要的是一个能够连接到 AWS(或其他服务提供商)的平台,并利用该平台最大限度地发挥无服务器技术的优势。

无服务器平台

虽然名称可能令人困惑,但 Serverless 平台是构建、开发和扩展无服务器应用程序的绝佳方式。它免费使用,而且围绕它建立的社区支持也令人难以置信。

选择合适的无服务器框架有很多不同的方法,除了拥有超过 25000 个 GitHub star 并且是部署无服务器应用的首选工具之外,我推荐无服务器技术的另一个原因是它与云平台无关的特性。虽然我并不像大家抱怨的那样深受厂商锁定之苦,但我喜欢能够轻松部署到各种不同服务上的想法,而无需经历繁琐的步骤和步骤。

项目设置非常简单,在系统上安装 Serverless 后,您可以使用以下命令初始化 Serverless 框架:

serverless login

这将帮助您完成 AWS 的设置和登录,之后您就可以开始发布 Lambda 函数了。从现在开始,您可以从头开始构建应用程序,也可以使用 AWS 提供的任何样板代码。

serverless create --template aws-nodejs --path sls-express-mongodb

它会安装并预配置几乎所有你需要的东西,让你快速上手使用强大的 API,从而高效地支持你的整个应用程序。

这里列出了一些很棒的教程,可以帮助你快速上手无服务器架构:

1.使用 AWS Lambda 和 AWS SES 构建无服务器联系表单

2. 使用 AWS 实现无服务器架构 - 利用 Lambda 和 S3 动态调整图像大小

3. 使用 Express 和 MongoDB 构建无服务器 API 的速成课程

4. 15分钟内创建你的第一个无服务器网站

5. 使用 AWS 实现无服务器架构 - 通过 SNS 消息传递触发 Lambda 函数

好了,关于这个话题我就只有这些了,不过因为更新很多,我会尽量保持更新。如果你觉得有什么资源缺失,请在推特上@johndemian告诉我。

文章来源:https://dev.to/johndemian/the-ultimate-basic-guide-to-serverless-527f