FaaS介绍

article/2025/9/5 18:04:03

 

FaaS介绍

         云计算技术的核心是服务化,服务化就需要提供闭环和灵活的服务。而云计算也在持续发展中,从最初的基础设施服务化(IaaS),平台服务化(PaaS),软件服务化(SaaS),陆续演化出数据库服务化(DBaaS),容器服务化(CaaS)。其实一个更细分的服务化叫做FaaS,FaaS是Functions as a Service的缩写,可以广义的理解为功能服务化,也可以解释为函数服务化。使用FaaS只需要关注业务代码逻辑,无需关注服务器资源,所以FaaS也跟开发者无需关注服务器Serverless密切相关。可以说FaaS提供了一个更加细分和抽象的服务化能力。

        

FaaS和PaaS的关系

    要理解FaaS,就必须了解FaaS和PaaS的关系(关于PaaS的前世今生可以参考笔者的另一篇博客http://dockone.io/article/635)。

         在早期的PaaS的技术实现中,比如GAE、SAE,因为当时还没有像Docker容器这样的沙盒打包能力,PaaS往往会提供各种语言技术栈,比如Java\PHP等,而开发者通过上传的代码的方式进行部署,PaaS会负责代码构建和服务的生命周期管理。进一步的,PaaS开始允许开发者自定义开发和构建环境,比如像Heroku和CloudFoundry的Buildpack就是定义了代码的构建和运行逻辑,Buildpack实现了三步功能:

 

  • detect:检查当前代码是否能支持,比tomcat buildpack发现WEB-INF路径就认为自己能够运行它。
  • compile:将代码进行编译构建,比如将java代码构建成jar包。
  • release:将应用程序启动,比如运行tomcatstartup.sh

 

备注:buildpack的详细说明可以参考https://docs.cloudfoundry.org/buildpacks/

        

         实际上BuildPack还是比较难解决代码依赖的问题,而Docker的容器一致性环境和Dockerfile组成完成了强大的沙盒打包能力,为此PaaS平台纷纷支持Docker容器来解决代码构建,像Kubernete就可以专注于容器编排和服务生命周期管理,而不用像CloudFoundry那样要在内部流程和组件提供代码构建能力,所以Kubernete也被称为CaaS,因为只关注容器的服务化管理,代码的构建由Docker或者上层Devops平台负责。

        

         所以可以说一开始FaaS是和PaaS融合在一起的,而现在PaaS就更加专注于服务编排和资源管理,而FaaS也开始独立出来,FaaS逐渐形成以代码函数为主体的事件驱动架构,使用FaaS的时候可以将函数作为一个线上服务、远程计算服务,可以通过 API 执行、通过邮件执行、通过Iot 执行,通过队列执行。

         云计算服务提供商也纷纷提出FaaS,比如AWS Lambda,Google Cloud Functions以及Azure Functions,然后也有更多的FaaS开源框架推出。接下来我们通过介绍AWS Lambda让读者更加清楚FaaS的业务形态和使用场景。

 

AWS Lambda

    Lambda是AWS 2014年推出的计算服务。Lambda是一种FaaS,所以Lambda服务的核心概念是Lambda function(简称function,函数)。围绕function可以定义情景,包括执行环境(语言、内存、超时、 IAM角色)以及这个function要触发的另一个function

       function上传之后,开发者可以将其指定到指定的AWS资源(如某个S3 bucket,某个DynamoDB表,某个Kinesis流),然后Lambda就会建立该资源跟你的function之间的关联。当资源方面发生变动,Lambda就会去创建资源去执行你的function。用于运行function的资源的创建分配和释放都有Lambda自动来做,开发者完全不需要去干预。

         Lambda是一个事件驱动架构,应用由函数(functions,即业务逻辑的载体)+ 数据(data,即跟业务相关的输入与输出),以及这两者之间的交互——即事件(events。常见的事件如增加、变更、删除等)组成。所以Lambda可以无缝地和其他服务集成,如下:

场景1:Amazon S3 +Lambda进行图片处理

       假设有一个照片共享应用程序。用户在应用程序上传照片,应用程序将这些用户照片存储到 Amazon S3 存中。然后应用程序针对上传的图片进行处理,包括图片压缩、加水印等等,在这种场景下,通过 Lambda 配合S3Amazon S3 Lambda支持的 AWS 事件源之一,可以发布对象创建的事件 并调用您的 Lambda 函数。 Lambda 函数代码可以从 S3 存储桶读取照片对象、进行图片处理,然后将其保存到S3

 

场景2:Amazon APIGateway+Lambda实现API调用

       通过 Amazon API Gateway,可以根据在 AWS Lambda 中运行的代码快速、轻松地创建自定义 API,然后通过 API 调用EC2或者 Lambda。Lambda相比EC2来说是一个即开即用的函数,在没有调用的时候是不会运行和计费的,并且AWS可以根据请求的大小,自动伸缩Lambda所需的资源,这一切都是开发者无需关心的。

      

        

 

 

作者简介

吴龙辉,致力于云计算PaaS的研究和实践,《Kubernetes实战》作者,活跃于CloudFoundry,Docker,Kubernetes等开源社区,贡献代码和撰写技术文档。 
邮箱:wlh6666@qq.com


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

相关文章

什么是功能即服务(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…

Android App清除数据的方案

前言 最近MIUI13上出了个未经应用商店安装&#xff0c;算是未知来源。AndroidID&#xff0c;通知&#xff0c;网络权限没授权则默认关闭。 安装app时允许虚拟身份ID&#xff1a; 允许允许虚拟身份ID前获取一次AndroidId&#xff1a; attachBaseContext获取AndroidId, 此时还没…

kafka清理数据

由于项目原因&#xff0c;最近经常碰到Kafka消息队列拥堵的情况。碰到这种情况为了不影响在线系统的正常使用&#xff0c;需要大家手动的清理Kafka Log。但是清理Kafka Log又不能单纯的去删除中间环节产生的日志&#xff0c;中间关联的很多东西需要手动同时去清理&#xff0c;否…

Kafka数据清理

目录 kafka数据清理日志删除&#xff08;Log Deletion&#xff09;1. 基于时间的保留策略2. 基于日志大小的保留策略3. 基于日志起始偏移量保留策略 日志压缩&#xff08;Log Compaction&#xff09; 原文地址&#xff1a;https://program-park.github.io/2021/09/18/kafka_11/…

mysql数据库要定期清除吗_数据库mysql定时清除数据

数据库mysql定时清除数据 数据库mysql定时清除数据 https://www.jiangweishan.com/article/2384238490809808.html 作者&#xff1a;andy0012019.11.22来源&#xff1a;Web前端之家浏览&#xff1a;2081评论:0 关键词&#xff1a;jsmysql 一个项目如果规划不合理&#xff0c;每…

SDN是什么,与传统分布式网络有什么区别

传统的的分布式网络 分布式网络也叫网状网络&#xff0c;它是由分布在不同地点的计算机系统互连而成&#xff0c;网中无中心节点。通信子网是封闭式结构&#xff0c;通信控制功能分布在各节点上。 分布式网络的特点是&#xff1a;可靠性高&#xff1b;网内节点共享资源容易&am…