Serverless是什么html
Serverless中文译为“无服务器”,最先能够追溯到2012年Ken Fromm发表的《Why The Future Of Software And Apps Is Serverless》,他描述了一种场景,从用户本身维护的物理机,到IaaS,再到PaaS,计算模式的转变并不会中止,在云计算基础设施成熟的状况下应用程序能够不须要考虑服务器的存在,无服务器计算让开发者能够在不考虑服务器的状况下构建并运行应用程序和服务。前端
再到2016年,Mike Roberts在Martin Fowler的博客《Serverless Architectures》中,将Serverless架构分为Backend as a Service(BaaS)和Functions as a Service(FaaS)。web
●BaaS也就是后端即服务,即应用架构由大量三方云服务和API来组织,使应用中关于服务器的逻辑和状态都由服务提供方来管理。好比典型的单页应用(SPA)和移动APP这些富客户端应用,先后端的交互主要以Rest API调用为主,只须要调用服务提供方的API便可完成相应的功能,好比身份验证、数据访问等。json
●FaaS能够被称为函数即服务,开发者能够直接将服务侧业务逻辑代码部署、运行在第三方提供的无状态计算容器中,开发者只需编写业务代码便可,无需关注服务器,且代码的执行是由事件触发的。后端
一个Serverless的应用就是这样一个将BaaS和FaaS融合在一块儿的应用,用户关注于应用的业务逻辑代码,以函数为粒度将其运行在FaaS平台上,并和BaaS三方服务整合在一块儿,最后搭建一个完整的系统,整个过程彻底无需关注服务器。api
Serverless的优点服务器
1.无需管理服务器网络
开发者只需关注应用的业务逻辑,而无需关注服务器的存在,下降业务接入门槛,快速上线,提升开发和运维效率。架构
2.灵活扩展、按需付费less
据Gartner和麦肯锡统计,全球的服务器CPU平均利用率只有6%到12%,大量应用的资源利用率是很是低下的,特别是对于负载波峰波谷明显的应用。而Serverless能够根据负载弹性伸缩,并按需付费,根据实际运行消耗的资源计费,且业务是以函数的粒度运行的,能够充分利用碎片资源,极大地减少运做成本。
函数工做流FunctionGraph
上面简单介绍了Serverless架构以及其优势以后,咱们再介绍一下华为云的函数工做流(FunctionGraph,FGS)。
函数工做流(FunctionGraph,FGS)是一项基于事件驱动的函数托管计算服务,托管函数具有以毫秒级弹性伸缩、免运维、高可靠的方式运行。经过函数工做流,开发者无需配置和管理服务器,只需关注业务逻辑,编写函数代码,以无服务器的方式构建应用,便能开发出一个弹性高可用的后端系统,并按实际运行消耗的资源计费。极大地提升了开发和运维效率,减少了运做成本。
构建无服务器图片鉴黄web应用
为了让你们对Serverless架构和函数工做流有更直观的了解,接下来咱们将介绍如何经过函数工做流快速构建一个完整的无服务器的图片鉴黄Web应用,以下图,该应用接收用户上传的图片,并对图片进行分析,判断是否为色情图片。点击此处可免费体验Demo
试想,若是咱们经过传统的模式开发此应用,须要如何开发?
即便是基于如今的云平台,咱们也仍须要购买云服务器,关注其规格、镜像、网络等各指标的选型和运维,而后在开发过程当中可能还须要考虑与其余云服务的集成使用问题,使代码中耦合大量非业务代码,而且服务器等资源也并不是是按需的,可能会形成大量多余的费用。
如今咱们能够经过函数工做流服务来快速构建这个系统,而且彻底无需关注服务器,且按需运行,如图:
建立函数,在函数中调用华为云内容检测服务提供的图片鉴黄接口,实现图片鉴黄功能,并为该函数配置一个APIG触发器,对外提供图片鉴黄的API,从而构建出一个完整的图片鉴黄无服务器后端。而后将Web页面的静态资源部署在对象存储服务(OBS)中,用户能够直接从OBS访问前端页面。用户上传图片时,页面调用前面构建的图片鉴黄API,他会自动触发函数执行,而开发者编写的函数只需实现接收到图片以后如何处理图片的逻辑(调用内容检测服务服务)便可,最后将结果返回给前端页面。至此,咱们就构建了一个完整的无服务器图片鉴黄Web应用。
如今,咱们将介绍如何端到端地将此无服务器应用构建出来。
后端API搭建
进入函数工做流服务函数建立页面,选择图片鉴黄模板。该模板已经提供了本应用中函数的代码,按照代码注释中的指示建立函数以后,就成功搭建了本应用的后端系统,为函数所建立的APIG触发器会提供一个调用该后端函数的HTTP(s) API,供外部系统(如前端页面)调用。
建立成功后API的URL能够在函数详情页面的“触发器”栏看到:
前端页面搭建
前端的展现形式有不少,这里咱们提供了一份前端代码包供你们学习参考,能够将此代码包部署到OBS上,快速构建一个单页Web应用(SPA)。而后调用上一步后端提供的接口,连通后端系统,完成整个无服务图片鉴黄Web应用的构建。
1.下载代码包并解压
2.为了让前端页面访问您的函数,须要配置页面Rest请求的URL。修改代码包里/functiongraph/assets/config/apis.json文件中checkImage的值,更改成上一步“后端API搭建”中建立的APIG触发器URL,即您的后端API的访问地址。
3.经过OBS托管前端页面。进入对象存储服务,建立一个OBS桶,将程序包文件逐个上传至该桶中。由于文件比较多,咱们建议您下载 OBS Browser ,使用OBS Browser前,请先获取访问密钥。
4.启动网站。进入桶的静态网站托管界面,单击静态网站托管,配置桶的默认首页为index.html
配置完成后,您就已经成功搭建了本案例的前端系统。您能够经过obs提供的访问地址访问您的前端页面,检测图片时,页面会发送请求到您的函数。
总结
经过上面端到端构建一个完整的无服务器图片鉴黄Web应用,咱们能够发现Serverless的架构具备以下优势:
1.无需关注任何服务器,只需关注核心业务逻辑,5分钟快速构建后端系统并上线,极大地提升了开发效率。
2.函数运行随业务量弹性伸缩,按需付费,当建立的函数没有执行时,不计费。
3.能够经过简单的配置连通函数工做流和其它云服务,甚至云服务和云服务,好比本例中只需建立一个APIG触发器即可完成API网关和函数工做流的链接,而后在函数中调用内容检测服务的鉴黄接口,那么函数就像一个粘合剂同样将两个云服务链接在一块儿。