使用 Amazon Lambda 进行无服务器计算:云架构中的一场革命

Serverless
容器
Amazon Simple Queue Service (SQS)
Amazon Lambda
生成式人工智能
0
5
<video src="https://s3.cn-north-1.amazonaws.com.cn/dev-media.amazoncloud.cn/37f0bdd6-03c7-4cfb-88b5-e7ef7c261271_3+%E3%80%90Vedio%E3%80%91whta_is_aws_lambda_v0.mp4" class="bytemdVideo" controls="controls"></video> ### 引言 十年前,[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)架构还像是痴人说梦。不再如此了! 有了 Amazon Lambda,我们现在可以建构和运行应用程序而不需要考虑服务器。云供应商会无缝地处理所有服务器的供应、扩展和管理。我们只需要关注代码。 这为云部署带来了前所未有的敏捷性、自动化和优化。但是,要发挥它的全部潜力需要对 Lambda 独特的架构和能力有扎实的掌握。这篇文章旨在通过实际示例、经验教训和以工程师视角深入内部工作原理来揭开它的魔力! ### 什么是无服务器计算? 在深入探讨 Lambda 之前,让我们先厘清“[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)“的真正含义。[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)并不意味着完全没有服务器。物理服务器仍然为云基础设施提供支持。 关键的区别在于开发人员不需要直接供应或管理这些服务器。云供应商将基础设施复杂性抽象出来。我们的代码部署在短暂的容器中,这些容器是事件驱动的,会自动扩展,并且仅针对消耗的资源进行计费。 这种“[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail),无运维“的模型将成本与使用量高度对齐,并加速了开发。传统的服务器、虚拟机和容器在许多工作负载中仍然发挥着其作用。但是 Lambda 在处理事件驱动和瞬态计算需求方面表现卓越。 ### Lambda 执行模型 Lambda执行模型与传统架构有根本不同。让我们来剖析一下底层发生的事情: ![3-1. telemetry-api-concept-diagram.png](https://dev-media.amazoncloud.cn/09fe66638d5f47209d9a326a3785b2da_3-1.%20telemetry-api-concept-diagram.png "3-1. telemetry-api-concept-diagram.png") 一些关键方面: - **无状态**:每次执行都在单独的容器中进行。执行之间没有亲和关系。 - **短暂**:容器可以在毫秒内初始化和销毁。 - **事件驱动**:执行由配置的事件触发。 - **可扩展**: 根据队列深度动态添加和删除容器。 - **[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)**:我们不管理容器基础设施。亚马逊云科技处理所有这些。 通过这种模型,Lambda 可以内在地处理许多并行请求并按需扩展。我们的代码只关注业务逻辑。 接下来我们看看 Lambda 执行中的生命周期事件。 ### Lambda 函数生命周期 当发生事件调用时,Lambda 会经历一个明确定义的生命周期: ![3-2. Overview-Successful-Invokes.png](https://dev-media.amazoncloud.cn/06e350284c9f4b95bad645314be29368_3-2.%20Overview-Successful-Invokes.png "3-2. Overview-Successful-Invokes.png") - **冷启动**:对于首次调用,Lambda 必须初始化一个容器。这会导致一些延迟。 - **初始化和调用**:代码被加载并执行。调用处理程序方法。 - **关闭**:一次执行完成后,容器停止。任何后续的执行都会重用热容器。 理解这种冷启动开销对于优化 Lambda 性能至关重要。我们看看下面如何做。 ### 优化 Lambda 冷启动 没有什么比冷启动慢更让人痛苦的了。幸运的是,有一些经过验证的技术可以缓解这一问题: - **使用容器重用**:设置非零超时,以便容器在调用之间保持存在。 - **优化部署程序包大小**:删除不需要的依赖项和工件以最小化下载时间。 - **选择高性能运行时**:Go、Python 和 NodeJS 初始化开销很低。 - **预取容器**:使用预配置并发性保持容器初始化。 - **优化IAM角色**:使用 Amazon SSO 等服务减少角色承担的延迟。 做好冷启动是一门艺术和科学!有了上述技巧,我们可以轻松实现亚秒级的冷启动。 现在让我们转而看一些Lambda实际应用的示例。 ### Lambda 使用案例 凭借 Lambda 灵活的执行模型,可能性是无穷的。下面是一些喜欢的 Lambda 使用方式: **数据处理** - 流处理用于实时分析 - 批量数据转换 - 生成聚合报告 **集成和消息传递** - 通过 SQS 触发用于分布式工作负载 - 对 SNS 通知做出反应 - 服务之间的集成粘合剂 **Web 应用程序** - 运行[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)后端 - 提供 API 网关支持 - 预处理 HTTP 请求 **基础设施自动化** - 自定义自动化工作流程 - 程序化资源管理 - 自我修复能力 等等! Lambda 仅由我们的创造力所限。 为了更具体,我们接下来演练一个真实的[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail) Web 应用程序。 ### 构建一个无服务器 Web 应用程序 我们来看看 Lambda 如何支持可扩展的[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail) Web 架构: ![3-3. product-page-diagram_Lambda-MobileBackends_option2.00f6421e67e8d6bdbc59f3a2db6fa7d7f8508073.png](https://dev-media.amazoncloud.cn/20f4d209b8264d90af947980be6a8b70_3-3.%20product-page-diagram_Lambda-MobileBackends_option2.00f6421e67e8d6bdbc59f3a2db6fa7d7f8508073.png "3-3. product-page-diagram_Lambda-MobileBackends_option2.00f6421e67e8d6bdbc59f3a2db6fa7d7f8508073.png") - **API网关**: Lambda函数为API后端提供支持。 - **异步工作**: SQS和SNS集成Lambda实现扩展工作负载。 - **静态资产**: S3托管前端静态资产,如HTML/CSS/JS。 通过这种设置,我们可以获得强大的可扩展性、出色的性价比和低管理开销。Lambda服务处理基础设施的重力劳动,如可用性、冗余和扩展。我们只关注核心产品交付! 当然,[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)应用程序也有其自己的细微差别。明天的文章将分享一些实际的优化、调试、CI/CD和其他运维方面的技巧。 ### 总结思考 我们只触及了 Lambda 和[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)的改变游戏规则的潜力。在底层, Lambda 通过无状态、短暂和事件驱动的执行颠覆了基础设施管理。 这为我们的云架构带来了前所未有的敏捷性、自动化和效率。请记住,大权带来大责任! Lambda 仍需要经过深思熟虑的设计和运维才能平稳运行。 希望你喜欢这个 Amazon Lambda 快速概览之旅。请告诉我哪些方面让你产生共鸣,或者你想要了解的任何其他 Lambda 主题。再会,继续构建那些[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)解决方案! ### 参考资料 - [Amazon Lambda 开发人员指南](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html?trk=cndc-detail) - [Amazon Lambda 最佳实践](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html?trk=cndc-detail) - [使用 Amazon Lambda 的无服务器架构](https://www.manning.com/books/serverless-architectures-on-aws?trk=cndc-detail) - [Amazon 计算博客](https://aws.amazon.com/blogs/compute/?trk=cndc-detail)
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
5
目录
关闭