第 13 章 无服务器技术 无服务器技术
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
无服务器 是最近在 IT 行业引起热议的一个术语。就像这类术语经常出现的情况一样,人们对它们的实际含义有着不同的看法。从表面上看,无服务器意味着你不再需要担心服务器的管理问题。在某种程度上,这确实是对的,但这只适用于使用无服务器技术所提供功能的开发人员。本章将介绍要实现这个神奇的无服务器世界,需要在幕后做大量工作。
许多人将无服务器(serverless)一词等同于功能即服务(FaaS)。这有一部分是对的,它主要是在 AWS 于 2015 年推出 Lambda 服务时出现的。AWS Lambda 是可以在云中运行的函数,无需部署传统服务器来托管函数。因此被称为无服务器。
然而,FaaS 并不是唯一可以被称为无服务器的服务。如今,三大公有云提供商(亚马逊、微软和谷歌)都提供了容器即服务(CaaS),可以将完整的 Docker 容器部署到它们的云上,而无需配置服务器来托管这些容器。这些服务也可称为无服务器服务。这类服务的例子有 AWS Fargate、Microsoft Azure Container Instances 和 Google Cloud Run。
无服务器技术有哪些使用案例?对于 AWS Lambda 等 FaaS 技术来说,特别是由于 Lambda 功能可以由其他云服务触发的事件驱动方式,使用案例包括: 1:
-
提取-转换-加载(ETL)数据处理,例如,将文件上传到 S3,触发执行一个 Lambda 函数,该函数对数据进行 ETL 处理,并将其发送到队列或后端数据库。
-
对其他服务发送到 CloudWatch 的日志进行 ETL 处理
-
基于 CloudWatch 事件触发 Lambda 函数,以类似 cron 的方式调度任务
-
基于亚马逊 SNS 触发 Lambda 函数的实时通知
-
使用 Lambda 和 Amazon SES 处理电子邮件
-
无服务器网站托管,静态网站资源(如 Javascript、CSS 和 HTML)存储在 S3 中,并由 CloudFront CDN 服务提供支持,REST API 由 API Gateway 处理,API 请求路由到 Lambda 函数,Lambda 函数与亚马逊 RDS 或亚马逊 DynamoDB 等后端进行通信。
每个云服务提供商的在线文档中都确定了许多无服务器使用案例。例如,在谷歌云无服务器生态系统中,网络应用最好由谷歌AppEngine处理,API最好由谷歌函数处理,而在Docker容器中运行进程则首选CloudRun。举个具体例子,考虑一个需要执行机器学习任务的服务,如使用 TensorFlow 框架进行对象检测。由于 FaaS 在计算、内存和磁盘资源方面的限制,再加上 FaaS 设置中库的可用性有限,因此使用 CaaS 服务(如 Google Cloud Run)运行此类服务可能比使用 FaaS 服务(如 Google Cloud Functions)更好。
三大云提供商还围绕其 FaaS 平台提供了丰富的 DevOps 工具链。例如,当您使用 AWS Lambda 时,不费吹灰之力,您也可以从 AWS 添加这些服务:
-
AWS X-Ray 用于跟踪/可观测性
-
用于日志记录、警报和事件调度的 Amazon CloudWatch
-
用于无服务器工作流协调的 AWS Step Functions
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access