无服务器架构(Serverless Architecture)
我们将从最基础的概念开始,逐步深入到它的原理、优缺点以及适用场景。
第一步:摆脱“服务器”这个词的字面恐惧
你以前可能觉得,做一个网站或应用,必须自己买一台电脑(服务器)24小时开着,安装操作系统、数据库、Web服务器软件,还要负责打补丁、防攻击、处理硬盘坏了怎么办。这叫有服务器架构。
无服务器架构不是真的没有服务器,而是“你不需要关心服务器”。服务器依然存在,但它的管理(买硬件、装系统、扩硬盘、重启)全部由云服务商(如AWS、阿里云、腾讯云)负责。你只写代码,然后上传,云服务商帮你运行代码。
第二步:核心执行单元——函数(Function)
在无服务器架构里,最小的运行单元不是“一个应用程序”,而是一个函数。
- 传统方式: 你写一个完整的Python/Java程序,监听80端口,里面有登录、注册、发帖、删除帖子的所有代码。程序一直运行,等待请求。
- 无服务器方式: 你只写一个函数,比如
def handle_login(username, password):,里面只做登录验证。把它部署到云平台。这个函数平时不运行,不消耗任何资源(也不花钱)。当有一个登录HTTP请求过来时,云平台瞬间启动这个函数,执行它,返回结果,然后立即冻结或销毁运行环境。
也就是说:按需运行,用完即停。
第三步:事件驱动——谁叫你起床?
无服务器函数不是自己乱跑的,它需要事件来触发。常见的事件源包括:
- HTTP请求: 用户访问
https://你的api/login。 - 数据库变化: 你向一张表里插入了一条新用户记录,触发一个函数去发送欢迎邮件。
- 文件上传: 用户上传了一张头像到云存储,触发一个函数去压缩图片。
- 定时任务: 比如每天凌晨2点,触发一个函数去清理过期数据。
所以架构变成了:事件源 → 触发 → 函数执行 → 结果。
第四步:与传统架构的关键区别
| 维度 | 传统架构(用云虚拟机) | 无服务器架构 |
|---|---|---|
| 服务器管理 | 你需要选机型、配置、打补丁 | 不需要,平台全管 |
| 运行方式 | 应用进程常驻,7x24小时 | 函数只在被调用时运行几毫秒~几分钟 |
| 计费粒度 | 按租用的小时数 × 机型价格 | 按实际执行次数 × 执行时间(毫秒计) |
| 伸缩能力 | 手工或写脚本增加虚拟机 | 自动并行:1个请求启动1个函数实例,1万个请求瞬间启动1万个实例 |
| 状态存储 | 应用自身可以存内存变量 | 函数是无状态的,状态必须放外部(数据库、Redis) |
第五步:深入一个执行细节(冷启动)
无服务器最大的挑战是冷启动。
- 假如你的函数半小时没人调用,云平台会把它的运行环境回收。
- 当一个新的请求突然进来,平台需要:下载你的代码 → 解压 → 启动一个轻量级运行时(比如Node.js或Python解释器)→ 加载你的函数 → 执行。这个过程可能需要几百毫秒甚至几秒。
- 如果函数一直频繁被调用,平台会保持环境“温”着,下次调用就是微秒级响应(热启动)。
冷启动是你设计无服务器系统时必须考虑的问题。
第六步:怎么在创业中实践?
假设你要做一个创业项目的用户注册功能:
- 你写一个函数
register_user(event, context),里面解析HTTP body里的email和密码,存入云数据库(比如DynamoDB或云PostgreSQL)。 - 配置一个API网关,把
POST /user/register指向这个函数。 - 部署函数(用
aws cli或serverless framework工具)。 - 用户访问你的前端页面,填写表单,前端发送请求到API网关。
- API网关触发你的函数执行,函数写完数据库后返回
{"result":"ok"}。 - 你不需要担心这个API能扛多少QPS——无服务器会自动水平扩展。
第七步:无服务器架构的明显缺点(创业必须清醒)
- 不适合长时间运行的任务: 一般函数最大执行时间限制在900秒(AWS)或几分钟。不能跑一个视频转码几小时的任务。
- 不适合需要超低延迟(<10ms)的场景: 冷启动可能带来额外延迟。
- 调试复杂: 你无法ssh到那个函数里看日志,依赖特定的日志服务。
- 供应商锁定: 你的代码通常需要绑定该云平台的事件源API(如AWS的Lambda、API Gateway、S3触发器)。换云厂商基本得重写。
- 有请求频率的限制: 比如每个区域默认1000个并发函数实例,需要申请提额。
第八步:最简总结(一句话记住)
无服务器架构 = 你把代码写成一个个短的函数 + 平台负责实时拉起它们来响应事件 + 按实际调用次数和时间付费。
下次你做一个新创业项目,如果是:API后端、数据处理管道、定时任务、异步消息处理,并且流量忽高忽低(比如从0到暴涨),那么无服务器架构是一个值得优先考虑的技术选型。