JAVA技术交流QQ群:170933152

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:将应用程序启动,比如运行tomcat的startup.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 配合S3,Amazon 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所需的资源,这一切都是开发者无需关心的。

工作资讯002---FaaS和PaaS的关系_Iaas_Paas_Saas相关推荐

  1. FaaS、PaaS和无服务器体系结构的优势

    本文介绍了无服务器技术,并将其与PaaS和SpaaS进行了对比,同时介绍了无服务器体系结构的收益和成本,还有框架方面的需求. \\ 最开始,"无服务器"意在帮助开发者摆脱运行后端应 ...

  2. 工作资讯004---多范式编程语言

    技术交流QQ群[JAVA,.NET,BigData,AI]:170933152 本文主要讲述了三种编程范式--面向对象编程.函数式编程.泛型编程的概念 编程范式 编程范式是程序语言背后的思想.代表了程 ...

  3. 区块链溯源系统架构---区块链工作笔记002

    区块链溯源系统,实际上就是对区块链技术的一种实践 我们可以把区块链当成一种存储系统.之前我们存储的时候都是把数据存储到存储系统中.但是之前存储到数据库系统中的数据属于中心化存储.这种存储方式很难保证数 ...

  4. 业务流程、工作(操作)流程与审批流程的关系

    转载本文需注明出处:微信公众号EAWorld,违者必究. 你是否遇到过 BPS 中一个流程画成了蜘蛛网的模样,看着 200 多个环节感到手足无错,说好的灵活调整呢?说好的可复用易于变化呢?究其原因,往 ...

  5. 我们的工作与计算机有很大的关系英语,新视野英语教程第二册课后翻译答案(高职高专版)...

    新视野英语教程 2 汉译英 Unit One 1.房子着火了,里面的人面临着死亡的危险.(in danger of) The house was on fire and people inside w ...

  6. 工作年限和学历与工资的关系

    很多数据都表明,文化产业发展趋势很猛,游戏作为一种文化产业,也算是坐了一趟顺风车.随着玩家对游戏质量的要求和电脑配置的发展越来越迅速,游戏相关行业的发展也是顺应需求,例如游戏建模这方面,市场也比较大. ...

  7. 大数据之_数据采集Flume_Flume了解_学习内容介绍---Flume工作笔记002

    可以看到flume是个海量日志的采集,聚合和传输的系统 可以看到比如我们之前用的hive,有大量的日志可以用flume进行采集到hdfs中去 然后再看一下flume的具体学习内容.

  8. Android_Kotlin原生开发_声明变量与内置数据类型---Kotlin工作笔记002

    直接创建项目,使用kotlin写代码吧 创建项目的时候,左侧选择kotlin,右侧选择jvm|idea 选择个目录

  9. Component template should contain exactly one root element---基于Vue的uniapp手机端_前端UI_uview工作笔记002

    提示组件模板只能有一个根节点: 我这里写了两个了,这样是不行的. 用一个 <view> </view> 包裹上就可以了. 技术交流QQ群[JAVA,C++,Python,.NE ...

最新文章

  1. shader 3 rendering path
  2. 「Tensorflow」错误tensorflow.python.framework.errors_impl.UnknownError: 2 root error(s) found.
  3. Netflix:我们是如何评估Codec性能的?
  4. 修饰符在python函数中的用法详细解释
  5. 《机器学习概论》习题答案
  6. dubbo(provider,consumer)点到点直连配置
  7. 王道考研 计算机网络12 点对点链路 广播式链路 介质访问控制MAC 动态分配信道 ALOHA协议 CSMA CSMA/CD CSMA/CA协议
  8. 【转】Sobel 算子
  9. JDBC实现增删改查功能
  10. 数学边界(数学萌芽、初等数学、高等数学)
  11. matlab拟合热敏电阻温度特性曲线,深度解析NTC热敏电阻进行对数分段曲线拟合的技术分析...
  12. 【黑马程序员】新的开始
  13. 夜神模拟器调试Android应用程序
  14. 二级计算机中一级标题设置,如何编辑目录中一级标题二级标题的不同格式
  15. OpenGL第二讲——绘制简单的几何图形
  16. 许可协议html,许可协议
  17. Microsoft Compatibility Telemetry占用系统cpu
  18. 手把手教学php表情包,手把手教你做微信表情包
  19. oCPC实践录 | 广告冷启动问题的思考与总结
  20. linux中磁盘清理方法(简单好用)

热门文章

  1. 十个Java基础面试题(附答案)
  2. NYOJ-括号配对问题(数据结构)
  3. Java实现Redis的消息订阅和发布
  4. Ubuntu sudo 出现unable to resolve host 解决方法
  5. javascript-DOM-节点
  6. PHP spl_autoload_register()函数使用
  7. C++生成随机数:高斯/正态分布(gaussian/normal distribution)
  8. 【转】什么是磁珠(Ferrite Bead 即 FB)
  9. 微软十大软件开发英雄评选
  10. Java架构师成长之道之计算机组成原理组成篇