什么是 Serverless

发布时间: 更新时间: 总字数:993 阅读时间:2m 作者: 分享 复制网址

Serverless云原生开发模型的一种,特点是开发人员专注于构建和运行应用,而无需管理服务器等硬件资源。

介绍

在 Serverless 中:

  • 云提供商负责物理设备的维护和运维
  • 开发人员通过将代码打包到容器中进行部署
  • 部署时,开发人员不需关注硬件资源,应用即可对外服务(由请求来驱动计算),且根据需求自动伸缩
  • 按需计算:用户为实际占用的资源付费,不在为固定的云服务器、带宽、存储等资源付费

现代应用架构通常是 Serverless、Microservice 和传统分布式应用的混合模式

如何理解 Serverless

参考 运维/软件架构进化史 的资源粒度部分,做如下类比:

资源粒度 类比 特点
物理机 买私家车 成本高、利用率底
虚拟机 组汽车 灵活租用、按需购买资源
Serverless 打网约车 按需使用、根据业务负载弹性伸缩、没有闲置成本

与其它云计算模型的区别

  • 由云服务商负责管理基础架构(计算、存储和网络等)和应用扩展
  • 云服务商继续管理操作系统、文件系统、漏洞补丁、负载均衡、容器、弹性伸缩、日志和监控等
    • 开发人员专注于业务需求
    • 公司不需要采购昂贵的硬件资源
  • 应用部署与容器内,且容器在调用时按需启动
    • 出现触发代码运行的事件(如HTTP访问)时,云架构才为应用分配资源
    • 代码执行结束后,占用的大部分资源按照一定的策略释放

优点 & 缺点

  • 优点
    • 计算资源利用率高:按需付费、节约成本
    • 弹性伸缩
    • 聚焦业务、底成本(没有维护物理机、虚机等成本)
  • 缺点
    • 尚未形成统一的标准,每家云供应商都要自己的标准
    • 仅支持无状态服务
    • 高延迟:冷启动存在延迟、分布式会放大延迟
    • 存在厂商锁定的风险

分类

Serverless Architecture

图片摘自

Serverless 产品通常被分为两类(参考):

  • BaaS(Backend as a Service):处理整个后端的功能
    • 云服务端将后端所需的各种服务(如认证服务、数据库、消息队列、对象存储、块存储、代码构建等)封装为 API 提供给用户
    • 用户根据 BaaS 的 API 编写并提交代码,通过自动化的方式完成应用容器的构建、部署和扩缩容管理
  • FaaS(Function as a Service):处理应用程序中支持的 响应事件
    • 由事件驱动的计算执行的应用架构模型
    • 开发人员编写业务逻辑,并将其部署到云服务提供的管理平台中,之后:
      • 开发人员(或客户)通过 API 调用 Serverless 应用
      • FaaS 服务商通过 API 网关来处理 API 调用请求
    • 运行 Serverless 代码的容器特点:
      • 无状态(使数据集成变得更加简单)
      • 寿命短
      • 由事件触发(按需自动启动)
      • 完全有云提供商维护(客户无需接入环境维护)

Serverless 主流产品

  • 云厂商的 FaaS 产品
    • AWS Lambda
    • Google Cloud Functions
    • Microsoft Azure Functions(OpenSource)
    • Aliyun Function Compute
    • Huawei Cloud FunctionGraph
  • 开源解决方案
    • Apache OpenWhisk
    • OpenFaaS
    • Fission
    • Kubeless
    • Knative

参考

  1. https://martinfowler.com/articles/serverless.html
最新评论
加载中...
Home Archives Categories Tags Statistics