直接跳到内容

Serverless 架构

Serverless 架构是一种将应用逻辑与基础设施解耦的云计算模型,开发者仅需关注业务代码实现,无需管理服务器、操作系统或网络配置。其核心思想是将应用逻辑从服务端解放出来,通过事件驱动的方式实现应用程序逻辑。

核心概念与组成

Serverless 架构主要由两大组成部分构成:

FaaS + BaaS = Serverless

  • FaaS (函数即服务):允许开发者以函数为单位部署代码,这些函数在完全由第三方管理、事件触发的无状态计算容器中运行
  • BaaS (后端即服务):大量依赖第三方服务来处理核心后端功能,如数据库、身份认证等

与传统架构相比,Serverless 不是简单地表示“没有服务器”,而是指开发者无需关心服务器的管理和运维,将这些责任转移给云服务提供商。

架构演进与对比

传统三层架构

客户端 → 应用服务器(持续运行) → 数据库

  (处理所有业务逻辑)

Serverless 架构

富客户端 → API网关 → FaaS函数 → BaaS服务
              ↑          ↑
         (路由请求)  (特定功能执行)

在 Serverless 架构中,原本位于应用服务器上的身份验证、会话管理等功能被转移到 BaaS 服务中,而大量的展示逻辑则移到了前端。

核心特点

无需服务器管理

Serverless 架构让开发者从底层基础设施管理中解放出来:

  • 无需预购服务器、配置负载均衡或处理硬件故障
  • 云平台负责资源调配、监控、维护和容量规划
  • 开发者可专注于业务逻辑和代码开发

事件驱动模型

Serverless 函数由事件触发执行,典型事件源包括:

  • HTTP 请求 (通过 API 网关)
  • 文件操作 (如云存储中的文件上传)
  • 数据库变更 (如数据记录更新)
  • 消息队列 (新消息到达)
  • 定时任务 (按计划执行)

自动弹性伸缩

Serverless 平台具备强大的自动扩缩容能力:

  • 根据实时请求量自动调整实例数量
  • 从零到数千实例的秒级扩展能力
  • 流量峰值后自动缩减,避免资源闲置

按需计费

Serverless 采用精细化的计费模式:

  • 只在实际执行函数时计费
  • 按函数执行次数和运行时长付费
  • 无需为闲置的服务器资源付费
  • 以前端请求为例:用户请求 → API网关 → 函数执行 → 按执行时间计费

状态无关性

函数执行环境具有无状态特性:

  • 函数实例间不共享状态
  • 需要依赖外部存储 (如数据库、对象存储) 保存数据
  • 适合场景:函数 → 外部数据库/存储

核心技术优势

成本效益最大化

  • 降低运维成本:无需服务器管理和维护人力投入
  • 优化资源利用:彻底消除资源闲置浪费
  • 按实际使用付费:特别适合流量波动大的场景

开发效率提升

  • 快速迭代能力:函数可独立部署更新,加速产品迭代速度
  • 专注业务逻辑:开发者只需关注代码实现,无需管理基础设施
  • 多语言支持:支持 Node.js、Python、Java、Go 等主流语言

高可用与容错

  • 内置高可用:云平台自动跨多个可用区部署
  • 自动容错:故障时自动路由到健康实例
  • 服务水平保障:提供商负责系统稳定性和可靠性

挑战与局限性

冷启动延迟

冷启动过程

首次调用 → 加载函数环境 → 初始化代码 → 执行函数
           (100ms-2s延迟)

函数首次调用或长时间未调用时,需要初始化运行环境,导致响应延迟。优化策略包括预暖函数、保持最小实例数或选择性能更优的运行时。

调试与监控复杂性

  • 本地测试困难:函数依赖云环境服务,本地调试需要模拟事件源
  • 分布式追踪:跨函数调用链追踪需要集成专门的监控工具
  • 日志分散:日志分布在多个服务中,收集和分析较为复杂

供应商锁定风险

  • 平台特性依赖:各云厂商的触发器、存储和安全策略存在差异
  • 迁移成本:更换供应商可能需要修改代码和架构
  • 解决方案:采用抽象层 (如 Serverless Framework) 或遵循开放标准

执行限制

  • 运行时长限制:函数最大执行时间通常有限制 (如 15 分钟)
  • 状态管理:函数执行环境无持久化状态,需依赖外部存储
  • 临时磁盘空间:本地文件系统为临时性,重要数据需持久化存储

典型应用场景

理想使用场景

  • Web 应用程序后端
客户端 → API网关 → Serverless函数 → 数据库
  • 实时文件处理:如图片压缩、格式转换 文件上传 → 触发函数 → 处理文件 → 存储结果

  • 数据处理管道:ETL 流程、数据验证和清洗

  • 微服务架构:将独立功能拆分为函数,降低系统耦合度

  • 定时任务:如数据清理、报表生成

不推荐场景

  • 长时间运行任务:超出函数最大执行时间的任务
  • 低延迟实时系统:冷启动延迟可能影响用户体验
  • 高性能计算:需要持续高性能运算的场景

主流平台与工具

公有云平台

  • AWS Lambda:首个商业化 FaaS 产品,生态系统完善
  • Azure Functions:微软云 Serverless 服务
  • Google Cloud Functions:谷歌云函数计算服务
  • 阿里云函数计算:国内领先的 Serverless 平台

开发框架

  • Serverless Framework:跨云平台部署工具
  • AWS SAM:亚马逊专用无服务器应用模型
  • Terraform:基础设施即代码工具,支持多云部署
Serverless 架构已经加载完毕