使用 Amazon Lambda 进行无服务器计算:云架构中的一场革命
引言
十年前,无服务器架构还像是痴人说梦。不再如此了! 有了 Amazon Lambda,我们现在可以建构和运行应用程序而不需要考虑服务器。云供应商会无缝地处理所有服务器的供应、扩展和管理。我们只需要关注代码。 这为云部署带来了前所未有的敏捷性、自动化和优化。但是,要发挥它的全部潜力需要对 Lambda 独特的架构和能力有扎实的掌握。这篇文章旨在通过实际示例、经验教训和以工程师视角深入内部工作原理来揭开它的魔力!
亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库! |
什么是无服务器计算?
在深入探讨 Lambda 之前,让我们先厘清“无服务器“的真正含义。无服务器并不意味着完全没有服务器。物理服务器仍然为云基础设施提供支持。 关键的区别在于开发人员不需要直接供应或管理这些服务器。云供应商将基础设施复杂性抽象出来。我们的代码部署在短暂的容器中,这些容器是事件驱动的,会自动扩展,并且仅针对消耗的资源进行计费。 这种“无服务器,无运维“的模型将成本与使用量高度对齐,并加速了开发。传统的服务器、虚拟机和容器在许多工作负载中仍然发挥着其作用。但是 Lambda 在处理事件驱动和瞬态计算需求方面表现卓越。
Lambda 执行模型
Lambda执行模型与传统架构有根本不同。让我们来剖析一下底层发生的事情:
一些关键方面:
- 无状态:每次执行都在单独的容器中进行。执行之间没有亲和关系。
- 短暂:容器可以在毫秒内初始化和销毁。
- 事件驱动:执行由配置的事件触发。
- 可扩展: 根据队列深度动态添加和删除容器。
- 无服务器:我们不管理容器基础设施。亚马逊云科技处理所有这些。 通过这种模型,Lambda 可以内在地处理许多并行请求并按需扩展。我们的代码只关注业务逻辑。 接下来我们看看 Lambda 执行中的生命周期事件。
Lambda 函数生命周期
当发生事件调用时,Lambda 会经历一个明确定义的生命周期:
- 冷启动:对于首次调用,Lambda 必须初始化一个容器。这会导致一些延迟。
- 初始化和调用:代码被加载并执行。调用处理程序方法。
- 关闭:一次执行完成后,容器停止。任何后续的执行都会重用热容器。 理解这种冷启动开销对于优化 Lambda 性能至关重要。我们看看下面如何做。
优化 Lambda 冷启动
没有什么比冷启动慢更让人痛苦的了。幸运的是,有一些经过验证的技术可以缓解这一问题:
- 使用容器重用:设置非零超时,以便容器在调用之间保持存在。
- 优化部署程序包大小:删除不需要的依赖项和工件以最小化下载时间。
- 选择高性能运行时:Go、Python 和 NodeJS 初始化开销很低。
- 预取容器:使用预配置并发性保持容器初始化。
- 优化IAM角色:使用 Amazon SSO 等服务减少角色承担的延迟。
做好冷启动是一门艺术和科学!有了上述技巧,我们可以轻松实现亚秒级的冷启动。 现在让我们转而看一些Lambda实际应用的示例。
Lambda 使用案例
凭借 Lambda 灵活的执行模型,可能性是无穷的。下面是一些喜欢的 Lambda 使用方式:
数据处理
- 流处理用于实时分析
- 批量数据转换
- 生成聚合报告
集成和消息传递
- 通过 SQS 触发用于分布式工作负载
- 对 SNS 通知做出反应
- 服务之间的集成粘合剂
Web 应用程序
- 运行无服务器后端
- 提供 API 网关支持
- 预处理 HTTP 请求
基础设施自动化
- 自定义自动化工作流程
- 程序化资源管理
- 自我修复能力
等等!
Lambda 仅由我们的创造力所限。
为了更具体,我们接下来演练一个真实的无服务器 Web 应用程序。
构建一个无服务器 Web 应用程序
我们来看看 Lambda 如何支持可扩展的无服务器 Web 架构:
- API网关: Lambda函数为API后端提供支持。
- 异步工作: SQS和SNS集成Lambda实现扩展工作负载。
- 静态资产: S3托管前端静态资产,如HTML/CSS/JS。 通过这种设置,我们可以获得强大的可扩展性、出色的性价比和低管理开销。Lambda服务处理基础设施的重力劳动,如可用性、冗余和扩展。我们只关注核心产品交付! 当然,无服务器应用程序也有其自己的细微差别。明天的文章将分享一些实际的优化、调试、CI/CD和其他运维方面的技巧。
总结思考
我们只触及了 Lambda 和无服务器的改变游戏规则的潜力。在底层, Lambda 通过无状态、短暂和事件驱动的执行颠覆了基础设施管理。 这为我们的云架构带来了前所未有的敏捷性、自动化和效率。请记住,大权带来大责任! Lambda 仍需要经过深思熟虑的设计和运维才能平稳运行。 希望你喜欢这个 Amazon Lambda 快速概览之旅。请告诉我哪些方面让你产生共鸣,或者你想要了解的任何其他 Lambda 主题。再会,继续构建那些无服务器解决方案!
参考资料
- Amazon Lambda 开发人员指南
- Amazon Lambda 最佳实践
- 使用 Amazon Lambda 的无服务器架构
- Amazon 计算博客
文章来源:https://dev.amazoncloud.cn/column/article/64e5cea684d23218430681f1?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=CSDN
相关文章:

使用 Amazon Lambda 进行无服务器计算:云架构中的一场革命
引言 十年前,无服务器架构还像是痴人说梦。不再如此了! 有了 Amazon Lambda,我们现在可以建构和运行应用程序而不需要考虑服务器。云供应商会无缝地处理所有服务器的供应、扩展和管理。我们只需要关注代码。 这为云部署带来了前所未有的敏捷性、自动化和优化。但是,要发挥它的…...
谨慎使用Lombok的@Builder注解
现在很多程序员都习惯使用Lombok来使代码更加 “简洁”。但是使用Lombok也会造成很多问题,尤其Builder 有个很大的坑,已经见过好几次由于使用Builder注解导致默认值失效的问题,如果测试时没有在意这个问题,就很容易引发线上问题。…...
leetcode455. 分发饼干 【贪心】
题目: 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,…...

4V-28V Vin,6A同步降压DCDC变换器,集成3.3V和150mA LDO——SCT2361FPBR
SCT2361是一种高效率的同步降压型DC-DC变换器,集成3.3V和150mA LDO。输入电压范围为4V-28V,输出电压可调为0.6V,具有3mmx3mm的小QFN封装,可提供连续6A的输出电流。该器件将高、低压侧功率mosfet集成,使导通损耗降到最低…...
Linux中的scp指令
在Linux和Unix系统中,scp(Secure Copy Protocol)是一个用于通过SSH协议进行安全文件传输的命令行实用程序。与传统的cp(copy)命令不同,scp允许用户在不同的机器之间、或同一台机器的不同位置之间传输文件或…...
剑指 Offer 11. 旋转数组的最小数字
剑指 Offer 11. 旋转数组的最小数字 二分 要注意的是,由于存在重复数字,所以初始状态可能不满足二分的性质。不满足的情况是:左边开始的数字和右边结束的数字相等,所以一开始要缩小右边界,让右边界的数字小于第一个数…...
Redis面试题总结
1.什么是Redis Redis 是一种基于内存的数据库对数据的读写操作都是在内存中完成,因此读写速度非常快,常用于缓存,消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景,比如 String(字符串)、Hash(哈希)、…...

【Eclipse】搭建python环境;运行第一个python程序helloword
目录 0.环境 1.需准备&搭建思路 2.搭建具体步骤 1)查看是否安装过python 2)安装eclipse 3)安装和配置pyDev 3.创建第一个python程序具体步骤 1)新建项目 2)输入项目名字,和配置选项 3&#x…...
OpenAI 发布企业版ChatGPT-4
OpenAI 发布企业版ChatGPT-4 ChatGPT Enterprise 版本功能ChatGPT Enterprise 对比ChatGPT Enterprise 不同点未来发布计划OpenAI 发布企业版ChatGPT-4 OpenAI 宣布,鉴于ChatGPT的爆炸性成果,推出了针对企业的 ChatGPT Enterprise 版 ChatGPT Enterprise 版本功能 包含所有…...

Flowable7 设计器
1、flowable7 已经在主版本上移除了Flowable UI相关的包,包含bpm-json相关的所有包和流程设计器相关前端文件。 2、flowable7 版本目前只保留了xml运行相关的包,ui modeler已经移除 3、目前官方给的回复是只能在 flowable 云产品上使用设计器ÿ…...

Flutter问题记录 - Unable to find bundled Java version
新版本的Android Studio真的移除了JRE,jre目录找不到,怪不得报错了,不过多了一个jbr目录,找了个以前的Android Studio版本对比 搜了一下jbr(JetBrains Runtime),原来IDEA老早就开始用了…...

Tomcat 日志乱码问题解决
我就是三井,一个永不放弃希望的男人。——《灌篮高手》 Tomcat 日志乱码问题解决 乱码原因:字符编码不一致 如:国内电脑一般都是GBK编码,而Tomcat日志使用的是UTF-8编码 解决方法:将对应字符编码由 UTF-8 改为 GBK 即…...

yum源以及rpm安装包配置、yum源冲突、yum-config-manager命令找不到、curl: (35)、docker镜像重复拉取失败
yum源配置并解决冲突、curl: (35)、docker镜像重复拉取失败、yum-config-manager命令找不到的解决方法 有的时候按照教程走,可能会设置yum源,设置后用yum下载东西很有可能或造成冲突 yum源冲突的解决方式无非有两种:1. 删除冲突软…...
ChatGPT和文心一言的优缺点比较
ChatGPT和文心一言都是自然语言生成技术的代表,下面是它们的优缺点比较: ChatGPT的优点: 自由度高:ChatGPT生成的文本与给定的话题没有紧密的关联,可以灵活地生成多种不同的文本。多样性高:ChatGPT可以生…...
⛳ 面试题-单例模式会存在线程安全问题吗?
🎍目录 ⛳ 面试题-单例模式会存在线程安全问题吗?🎨 一、单例模式-简介🚜 二、饿汉式🐾 三、懒汉式🎯 3.1、懒汉式:在调用 getInstance 的时候才创建对象。(线程不安全)&…...

C - 滑动窗口 /【模板】单调队列
Description 有一个长为 n 的序列 a,以及一个大小为 k 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。 例如: The array is [1,3,−1,−3,5,3,6,7] and k3。 Input 输入一共有…...

工厂人员作业行为动作识别检测算法
工厂人员作业行为动作识别检测算法通过yolov7python深度学习算法框架模型,工厂人员作业行为动作识别检测算法实时识别并分析现场人员操作动作行为是否符合SOP安全规范流程作业标准,如果不符合则立即抓拍告警提醒。Python是一种由Guido van Rossum开发的通…...

【数据结构】顺序表详解
当我们写完通讯录后,顺序表肯定难不倒你,跟着小张一起来学习顺序表吧! 线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表&#x…...

HTML 播放器效果
效果图 实现代码 <!DOCTYPE HTML> <html><head><title>爱看动漫社区 | 首页 </title><link href"css/bootstrap.css" relstylesheet typetext/css /><!-- jQuery --><script src"js/jquery-1.11.0.min.js"…...
C++常用23种设计模式总结(三)------装饰模式
往期回顾 C常用23种设计模式总结(一)------单例模式 C常用23种设计模式总结(二)------观察者模式 什么是装饰模式 装饰模式是一种结构型设计模式,它允许你在运行时为对象动态添加新的行为。该模式通过将对象放入包装器中来实现这一点,这个包装器会实现与…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...

《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

基于单片机的宠物屋智能系统设计与实现(论文+源码)
本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢,连接红外测温传感器,可实时精准捕捉宠物体温变化,以便及时发现健康异常;水位检测传感器时刻监测饮用水余量,防止宠物…...

Qwen系列之Qwen3解读:最强开源模型的细节拆解
文章目录 1.1分钟快览2.模型架构2.1.Dense模型2.2.MoE模型 3.预训练阶段3.1.数据3.2.训练3.3.评估 4.后训练阶段S1: 长链思维冷启动S2: 推理强化学习S3: 思考模式融合S4: 通用强化学习 5.全家桶中的小模型训练评估评估数据集评估细节评估效果弱智评估和民间Arena 分析展望 如果…...
学习 Hooks【Plan - June - Week 2】
一、React API React 提供了丰富的核心 API,用于创建组件、管理状态、处理副作用、优化性能等。本文档总结 React 常用的 API 方法和组件。 1. React 核心 API React.createElement(type, props, …children) 用于创建 React 元素,JSX 会被编译成该函数…...

机器学习复习3--模型评估
误差与过拟合 我们将学习器对样本的实际预测结果与样本的真实值之间的差异称为:误差(error)。 误差定义: ①在训练集上的误差称为训练误差(training error)或经验误差(empirical error&#x…...