知识卡片

无服务架构由后端即服务与函数即服务构成及其适用边界

普通读书笔记卡

内容

无服务(Serverless)架构由两块拼成:后端设施——数据库、消息队列、日志、存储 等无业务含义的技术组件,运行在云端,称为”后端即服务”(BaaS);函数——业务 逻辑代码本身,运行在云端不必考虑算力和容量规划,称为”函数即服务”(FaaS)。 它的愿景是让开发者彻底不用管技术组件选型、部署、算力和运维,只写业务逻辑, 类比是从汇编语言跃迁到高级语言那样的生产力解放。但这个愿景建立在”相对无限 算力”和”按用量计费”两个前提上:函数不会一直常驻服务器,请求到达才启动,这 意味着函数天然不便依赖服务端状态,也会有冷启动延迟(数十到百毫秒,Java这类 启动慢的语言甚至接近秒级)。因此无服务目前更适合无状态、短连接、事件驱动 的场景(离线批处理、资讯类网站、公共API),而不适合业务逻辑复杂、依赖服务端 状态、响应速度要求高、需要长连接的场景(信息管理系统、网络游戏)——判断 一项工作能否搬到无服务架构,本质上是在检验它是否符合”无状态+能容忍冷启动” 这两个隐藏前提。

参考来源

- 位置:《凤凰架构:构建可靠的大型分布式系统》第1章"服务架构演进史"1.6节 "无服务时代"(源文件:_epub-src对应OEBPS/Text/chapter10.xhtml) - 结论依据:原文明确定义BaaS(后端设施)与FaaS(函数)两个组成部分,说明 无服务因按用量计费导致函数不常驻、存在冷启动,进而给出适合与不适合的 场景对比,直接支撑本卡片结论。 - 原始内容:后端设施是指数据库、消息队列、日志、存储等这类用于支撑业务 逻辑运行,但本身无业务含义的技术组件……在无服务中将它们称为"后端即 服务"……函数是指业务逻辑代码……在无服务中将其称为"函数即服务"……函数 不会一直以活动状态常驻服务器,请求到了才会开始运行,这就导致了函数不 便依赖服务端状态,也导致了函数会有冷启动时间。