Serverless无服务器架构详解
本文对serverless架构的基础概念,工作原理,应用场景以及具体产品进行详细解析 。
基础概念serverless:无服务器架构,即在无需管理服务器等底层资源的情况下完成应用的开发和运行,是云原生架构的核心组成部分 。
通俗来说,如果将购买一台物理服务器比作 买车 ,购买云服务器就类似于 租车 (租赁期间需要驾驶和维护,且即使闲置也需付费),那么serverless则类似于 出租车 (只需乘坐,按里程计费) 。
从技术层面来说,我们可以简单理解为: serverless = FaaS + BaaS 。一个完整的serverless应用一般由FaaS层负责无状态的计算,由BaaS层负责状态的存储:
- FaaS(函数即服务,Function as a Service):将函数代码托管给云产商,以服务形式运行,支持事件触发 。代表产品有腾讯云SCF、AWS Lambda等 。
- BaaS(后端即服务,Backend as a Service):指云平台提供的后端组件整合,开发者无需开发和维护后端服务,通过API/SDK的调用便可获得例如数据存储(对象存储、云数据库、云中间件等)、消息推送、账号管理、地图定位、AI、IoT等能力 。

文章插图
特点及优势:
- 免运维 :无需管理基础设施 —> 可以专注业务开发
- 按量计费 :闲时不计费 —> 降低成本
- 弹性伸缩 :峰时自动扩容 —> 无需考虑可用性问题
- 冷启动延迟: 一定时间内的首次调用可能需要冷启动(如进行加载代码、拉起容器等任务)—> 适合对响应速度要求不是太高的接口,更适合异步任务,不适合启动耗时久的JAVA项目
- 开发和管理设施: serverless应用的调试、测试、排障、发布等设施暂不成熟 —> 目前更适合后端逻辑不太复杂的轻量级应用
- 云产商绑定: 不同云产商提供的组件(如存储)接口不同,可能增加未来迁移成本 —> 使用标准化框架,并在设计时尽量隔离通用逻辑层和BaaS依赖层

文章插图
1.函数注册用户在控制台(或命令行)提交函数代码到云平台,并进行函数配置 。代码一般会被作为静态资源保存(如对象存储),而函数的元信息会被存入数据库中(如MySQL) 。
2.函数触发云函数的触发可以分为同步和异步两种情况:
- 如果是同步请求则等待函数执行结果后返回
- 如果是异步请求则可以投递到队列后直接返回
- 如果是首次执行,则需要进行宿主机调度,在宿主机拉起容器实例,下载函数代码,然后执行代码 。
- 首次执行完毕后Docker容器不会立即关闭,会等待一定时间周期,如果此时有新的请求进来,会被分配到该容器,直接运行代码 。
冷启动问题由于serverless按量计费的特点,其实现机制就必须要在函数调用时才去启动运行环境,也就是冷启动问题 。虽然保留一定时间可以让后续的请求无需加载,但如果在极短时间内并发大量请求,还是会同时启动多个容器,影响首个请求的响应时间 。前面也说到,云函数的特性和机制决定了它的应用场景,对于同时要求高并发、低时延的场景并不是特别适合 。
对于冷启动问题,下面以腾讯云的
推荐阅读
- WordPress上线笔记
- 无脊椎动物有哪几种 有哪些无脊椎动物
- 国企|“理想男友”职业排名出炉,国企职员无奈垫底,榜首成“香饽饽”
- 小米|最大风速达15.5m/s!小米米家智能无叶净化扇正式开售:1599元
- 鲸鱼是无脊椎动物吗 海豚属于脊椎动物吗
- 大学生|年纪越大越“吃香”的工作,少有勾心斗角,适合与世无争的大学生
- 如何使用 Squid 配置 SSH 代理服务器
- Windows 10搭建FTP服务器
- 以色列公司StoreDot开发全新无人机技术,承诺5分钟即可完成充电
- 服务器开发程序员必须搞清HTTPS通讯之证书