Serverless 是什么?BaaS 和 FaaS 是什么?

article/2025/9/5 17:59:39

前言

本文隶属于专栏《大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见大数据理论体系


概览

在这里插入图片描述

Serverless 是一个云原生开发模型,允许开发人员构建和运行应用程序,而无需管理服务器。

Serverless 也有服务器,但是它们会从应用程序开发中被抽象出来。

云提供商处理配置、维护和扩展服务器基础架构的日常工作。

开发人员只需将代码打包到容器中进行部署。

一旦部署,Serverless 应用程序响应需求,并根据需要自动扩展。

来自公有云提供商的 Serverless 产品通常通过事件驱动的执行模型按需计量。

因此,当 Serverless 功能闲置时,它不会花费任何费用。


Serverless 架构概述

Serverless 与其他云计算模型的不同之处在于,云提供商负责管理云基础设施和应用程序的扩展。

Serverless 应用程序部署在容器中,在调用时自动按需启动。

根据标准的基础设施即服务(IaaS)云计算模型,用户预购容量单位,这意味着你向公有云提供商支付全天候服务器组件的费用,以运行你的应用程序。

用户有责任在需求旺盛时期扩大服务器容量,并在不再需要该容量时缩小服务器容量。

即使应用程序未被使用,运行应用程序所需的云基础设施也是有效的。

相比之下,使用 Serverless 架构,应用程序仅根据需要启动。

当事件触发应用程序代码运行时,公有云提供商会动态为该代码分配资源。

当代码完成执行时,用户停止付款。

除了成本和效率效益外,Serverless 还使开发人员摆脱了与应用程序扩展和服务器配置相关的日常繁琐任务。

对于 Serverless,操作系统和文件系统管理、安全补丁、负载平衡、容量管理、扩容、日志记录和监控等常规任务都会转交到云服务提供商。

可以构建一个完全 Serverless 的应用程序,或者一个由部分 Serverless 和部分传统微服务组件组成的应用程序。


Baas & Faas

在 Serverless 模型下,云提供商运行物理服务器,并且作为用户的代理人动态地分配资源,将代码直接部署到生产环境中。

Serverless 计算产品通常分为两组,后端即服务(BaaS)和功能即服务(FaaS)。


Baas

BaaS 允许开发人员访问各种第三方服务和应用程序。

例如,云提供商可能会提供身份验证服务、额外的加密、云可访问的数据库和高保真使用数据。

使用 BaaS,Serverless 函数通常通过应用程序编程接口(API)调用。


Faas

更常见的是,当开发人员提到 Serverless 时,他们谈论的是 FaaS 模型。

在 FaaS 下,开发人员仍然编写自定义服务器端逻辑,但它在完全由云服务提供商管理的容器中运行。

Function-as-a-Service(FaaS)是一个事件驱动的计算执行模型,开发人员编写逻辑,该逻辑部署在完全由平台管理的容器中,然后按需执行。

与 BaaS 不同,FaaS 为开发人员提供了更大程度的控制权,开发人员创建自定义应用程序,而不是依赖预写服务库。

代码部署到由云提供商管理的容器中。具体来说,这些容器是:

  • 无状态的,使数据集成更简单。
  • 短暂的,允许它们运行很短的时间。
  • 事件触发的,因此它们可以在需要时自动运行。
  • 完全由云提供商管理,因此你只需支付所需的费用,不用始终启动应用程序和服务器。

使用 FaaS,开发人员可以通过 FaaS 提供商通过 API 网关处理的 API 调用 Serverless 应用程序。


Serverless 适合哪些应用场景?

Serverless 架构非常适合可以立即启动的异步无状态应用程序

同样, Serverless 非常适合经常出现不可预测的需求激增的场景

想想看,像批量处理传入的图像文件这样的任务,这些文件可能很少运行,但是当大量图像同时到达时,也必须准备就绪。

或者一项任务,例如监视数据库的传入更改,然后应用一系列功能,例如根据质量标准检查更改,或自动翻译它们。

Serverless 应用程序也非常适合涉及传入数据流、聊天机器人、计划任务或业务逻辑的用例。

其他一些常见的 Serverless 应用场景是后端 API 和 Web 应用程序、业务流程自动化、无间断网站以及跨多个系统的集成。

Serverless 计算的利弊是什么?

Serverless 计算可以提高开发人员的生产力并降低运营成本。

通过卸任配置和管理服务器的常规任务,开发人员有更多时间专注于他们的应用程序。

Serverless 通过减少开发人员明确描述他们需要操作来为他们配置的基础设施,从而帮助实现 DevOps 的采用。

通过整合第三方 BaaS 产品的全部组件,可以进一步简化应用程序开发。

在 Serverless 模型中,运营成本会降低,因为你可以根据需要支付基于云的计算时间,而不是一直运行和管理自己的服务器。


不运行自己的服务器或控制自己的服务器端逻辑可能会有缺点。

云提供商可能对其组件如何交互受到严格限制,进而影响你自己的系统的灵活性和定制程度。

在 BaaS 环境中,开发人员可能会受到代码超出其控制范围的服务。

更换云提供商还可能带来升级系统以遵守新供应商规格的成本。


Serverless 的演变

随着容器和按需云产品的普及, Serverless 架构和 FaaS 的概念齐头并进。

Serverless 的演变要追溯到三个阶段。


Serverless 1.0

Serverless 的 1.0 阶段存在局限性,使其不适合一般计算。

Serverless 1.0 的特点是:

  • HTTP和少数其他几个来源
  • 仅限函数
  • 执行时间有限(5-10分钟)
  • 没有编排
  • 有限的本地开发经验

Serverless 1.5

Kubernetes 的出现开启了 Serverless 1.5 时代,许多Serverless 框架开始自动扩缩容容器。

Serverless 1.5 的特点是:

  • 原生的
  • 基于 Kubernetes 的自动扩缩容
  • 微服务和函数
  • 易于在本地调试和测试
  • 多语言和便携式

Serverless 2.0

今天,随着集成和状态的增加,Serverless 2.0 时代正在出现。

云提供商已经开始添加缺失的部件,以使 Serverless 适合通用业务工作负载。

Serverless 2.0 的特点是:

  • 基本的状态处理
  • 企业集成模式的使用
  • 高级消息传递功能
  • 与企业 PaaS 混合
  • 企业级的事件源
  • 状态集成

什么是 Knative 和 Serverless Kubernetes?

作为在自动化基础设施上运行容器化应用程序的一种方式,Kubernetes容器编排平台是运行 Serverless 环境的热门选择也就不足为奇了。

但 Kubernetes 本身还没有准备好原生运行 Serverless 应用程序。

Knative 是一个开源社区项目,它添加了在 Kubernetes 上部署、运行和管理 Serverless 应用程序的组件。

Knative Serverless 环境允许你将代码部署到 Kubernetes 平台,如 Red Hat OpenShift。

使用 Knative,你可以通过将代码打包为容器映像并将其交给系统来创建服务。

你的代码仅在需要时运行,Knative 会自动启动和停止实例。

Knative 由 3 个主要组成部分组成:

  • 构建:将源代码构建到容器中的灵活方法。
  • 服务:通过基于需求的服务工作负载的请求驱动模型实现容器的快速部署和自动扩展。
  • 事件:消耗和制作事件以刺激应用程序的基础设施。应用程序可以由各种来源触发,例如来自您自己的应用程序的事件、来自多个提供商的云服务、软件即服务(SaaS)系统。

与早期的 Serverless 框架不同,Knative 旨在部署任何现代应用程序工作负载——从整体应用程序到微服务和微小功能。

作为由单个服务提供商控制的 FaaS 解决方案的替代品,Knative 可以在任何运行 Kubernetes 的云平台上运行。

这可能包括在本地数据中心运行。

这使组织在运行 Serverless 工作负载时具有更大的灵活性和灵活性。


http://chatgpt.dhexx.cn/article/lcojZ3wj.shtml

相关文章

FatFs

FatFs FatFS是一个为小型嵌入式系统设计的通用FAT(File Allocation Table)文件系统模块。FatFs 的编写遵循ANSI C,并且完全与磁盘I/O层分开。因此,它独立(不依赖)于硬件架构。它可以被嵌入到低成本的微控制器中,如AVR, 8051, PIC, ARM, Z80…

【云计算】XaaS最全介绍(按24字母合集):AaaS、BaaS、CaaS、DaaS、EaaS、FaaS、GaaS、HaaS、IDaaS…

IT行业创造了XaaS,即“一切即服务”: “X as a service”、“anything as a service”或“everything as a service” 。 其本质就是服务理念,未曾止步于SPI(SaaS、PaaS、IaaS(传统就这三个))模…

Faas,又一个未来?

经同事独家授权,原创发表此文 作者说明: 苗立尧 易宝支付运维工程师,热爱Kubernetes,对容器生态圈具有浓厚兴趣 个人公众号:容器时代 前言 云计算时代出现了大量XaaS形式的概念,从IaaS、PaaS、SaaS到容器云引领的Ca…

IaaS、PaaS、SaaS、BaaS和FaaS, 这些区别你真的了解吗?

IaaS、PaaS、SaaS、BaaS、FaaS,这些名词后面都带着aas三个字母,aas 是 As-a-Service,即为服务的意思。我们看下面这个架构图: IaaS、PaaS、SaaS 云平台一般都会提供以上架构图中的三种云服务 IaaS:Infrastructure as…

FaaS介绍

FaaS介绍 云计算技术的核心是服务化,服务化就需要提供闭环和灵活的服务。而云计算也在持续发展中,从最初的基础设施服务化(IaaS),平台服务化(PaaS),软件服务化(SaaS)&…

什么是功能即服务(FaaS)?

功能即服务(或称为 FaaS)是一种云计算服务,它允许开发人员以功能的形式来构建、计算、运行和管理这些应用包,无需维护自己的基础架构。 FaaS 是一种在无状态容器中运行的事件驱动型执行模型,这些功能将利用 FaaS 提供商…

计算机预览不到桌面,电脑文件夹的文件预览显示没有预览怎么办?

有可能是更改了查看方式造成的。解决的方法很简单: 打开存放照片的文件夹,在空白处点击右键,可以看到弹出的对话框中总共有9个选项,分别是:超大图标、大图标、中等图标、小图标、列表、详细信息、平铺、内容和隐藏文件…

KKFileView(十一)——文件预览

2021SCSDUSC 上篇文章提到文件预览工厂以及实现具体文件预览功能的类,这篇报告着重于各个文件预览流程 一、文本文件预览 之前的报告中有提到DownloadUtils工具类,该类通过输入文件描述和文件名得到文件的真实路径,如果失败的话也会返回信息…

基于开源项目kkFileView打造文件预览

1、需求 一般管理系统都有文件上传功能,基于此一般会诞生一个需求:用户需要在线预览自己上传的文件。需求很合理,但是没那么好做,原因在于浏览器默认支持图片、pdf等少量格式预览,而实际情况是你并不能要求用户只上传…

nginx配置简单文件预览

1.目的 预览图片、pdf、txt 2.配置 #搭建文件预览 server { listen 8888; server_name preview.xxx.com; location ^~ /preview/ { alias D:/data/; #不同OS键入对应path即可 if ($request_filename ~* ^.*?\.(html|doc|…

React封装文件预览组件

封装文件预览组件的时候,预览的文件地址要么是本地文件地址或者是接口返回的文件地址。 这里需要引入两个第三方库,分别是react-file-viewer和react-pdf-js。 其中react-file-viewer可以支持的文件: 虽然它能预览PDF格式的文件,但是为了方便对PDF格式文件预览的控制,比…

vue实现文件预览

1、可以预览图片、文档、视频等,视频需要安装视频预览插件:cnpm install --save video.js 2、代码: <!-- @format --><template><div><!--图片--><div v-if="imgShow"><img :src="downloadUrl" /></div>&l…

如何在vue中实现文件预览功能

文件流 如何将各种文件的文件流(blob)转化为线上可以直接预览的数据&#xff0c;这里简单介绍四种不同类型的文件预览。分别是pdf&#xff0c;docx&#xff0c;xlsx&#xff0c;jpg/png/jpeg等。有一个事情是需要重点注意的&#xff0c;文件流必须保证能够被正常下载解析后才可…

uniAPP手机端文件预览

前言 最近基于uniAPP的app遇到了个需求&#xff0c;需要文件预览。其实官方已经提供了这个解决方案 uni.downloadFile(OBJECT) uni.openDocument(OBJECT) 基于上面这两个API可以实现文件预览。本质上是先将文件下载到本地&#xff0c;然后调用手机内的其他app来打开你要预览…

文件预览:Markdown文件预览

文件预览系列&#xff1a; mavon-editor预览Markdown文件 xlsx预览excel文件 一、安装插件&#xff1a;mavon-editor npm i mavon-editor --save 二、在主文件中引入&#xff0c;并注册 import mavonEditor from mavon-editor; import mavon-editor/dist/css/index.css; /…

kkFileView安装及使用——文件预览解决方案

目录 一、前言二、kkFileView介绍三、kkFileView安装四、kkFileView的配置和使用 一、前言 网页端一般会遇到各种文件&#xff0c;比如&#xff1a;txt、doc、docx、pdf、xml、xls、xlsx、ppt、pptx、zip、png、jpg等等。 有时候我们不想要把文件下载下来&#xff0c;而是想在…

基于若依前后端分离版(Springboot+Vue)的文件预览

主要介绍两种方式实现文件预览的方式&#xff0c;一种是通过前端插件匹配不同的文件&#xff0c;另一种就是使用已经完善的文件预览系统。我更推荐使用第二种方式&#xff0c;因为这样会少去很多工作量。本文主要介绍第一种方式&#xff0c;第二种方式会出现在另外一篇文章中。…

Java中如何实现文件预览的功能

文件预览方法总结 前言一、kkfileview 文件在线预览二、officetohtml纯前端的方式三、JODConverter四、Aspose总结 前言 日常开发中常见的文件格式有pdf&#xff0c;word&#xff0c;Excel&#xff0c;PPT&#xff0c;Html&#xff0c;txt&#xff0c;图片等。pdf&#xff0c;…

前端技术实现文件预览(word、excel、pdf、ppt、mp4、图片、文本)

前言 因为业务需要&#xff0c;很多文件需要在前端实现预览&#xff0c;今天就来了解一下吧。 Demo地址[1]&#xff1a;https://zhuye1993.github.io/file-view/dist/index.html 实现方案 找了网上的实现方案&#xff0c;效果看起来不错&#xff0c;放在下面的表格里&#xff0…

localStorage怎样存取数据 怎样清除localStorage存储的数据

localStorage很多时候用来存储数据非常好&#xff0c;方便在页面中使用某些数据的时候调用 首先&#xff0c;通过setItem(key,value)即可存储数据 然后用getItem(key)的方式即可取得数据 可以看到&#xff0c;设置之后在浏览器的localStorage中看到存储的数据 使用localStoage…