目录
1.什么是无服务架构
无服务技术是FaaS和BaaS的结合
下面对于FaaS和BaaS的解释参考
https://zhuanlan.zhihu.com/p/91026752
和
http://www.360doc.com/content/18/0109/09/40769523_720416537.shtml
1.1 FaaS
函数即服务,它们仍然由应用开发者编写服务端逻辑,但不同于传统架构运行并且托管在服务器(物理机虚拟机)上,而是运行在无状态的容器中,这些容器实例通过事件触发而短暂运行(比如仅仅是一次函数调用,运行完毕以后就会销毁),并且通常完全由第三方管理,使用者无需关系这些容器的生命周期以及资源情况。这就是所谓的 “Function as a Service” 或者说 “FaaS”。
使用这一范式的开发者无需考虑服务器细节,只需要负责编写发生某些事件后所需执行的代码。云供应商将负责提供用于运行这些代码的服务器,并在必要时对服务器进行缩放。执行完毕后,承担这些功能的容器会立刻停用,并且执行过程以100毫秒为单位进行度量,用户只需为运行代码过程中所消耗的资源付费。
1.2 BaaS
完全集成第三方云上托管的服务 来完成服务端代码逻辑和管理状态 的应用。这些应用通常被称为 “富客户端” 应用,比如 单页WebAPP,移动App,他们都是通过直接调用庞大的云上生态体系服务来完成开发,像数据库(比如Parse,Firebase),认证服务(比如Auth0, AWS Cognito)等等。这些类型的服务再过去一直被描述为 “(Mobile) Backend as a Service”
2.目前存在的有哪些无服务架构
Amazon 、Google Cloud Functions、MicrosoftAzure Functions、IBM OpenWhisk,以及Iron.io和Webtask等各种开源实现都提供了类似的服务。
3.无服务架构的工作流程
参考:[1]刘畅,毋涛,徐雷.基于无服务器架构的边缘AI计算平台[J].信息通信技术,2018,12(05):45-49.
FaaS
这种方式主要是承载用户的
计算功能
,
更多是对用户的计算进行托管。
采用此种架构,
用户首先要将代码和配置提交到云平台上
,
代码即
用户为实现某一个函数功能编写的一份代码或者代码
包
;
配置则是指本身对于函数运行环境的配置
,
使用的
是哪种环境
、
所需的内存
、
超时时间等
,
以及触发函数
运行的触发器的配置
。
因为整个
FaaS
的运行方式是触
发式运行
,
触发就需要有一个事件来源
,
而
事件来源
可
以有很多种
。
-
例如当用户上传一张图片或者删除一张图片时
,
就会产生一个事件
,
这个事件会触发云函数的运行
-
例如和
API
网关的对接
,
也可以作为事件来源
,
在
用户的
HTTP
请求到达网关之后
,
API
网关会把该请求
作为事件转发给云函数
,
触发云函数的运行
,
云函数拿
到请求之后进行处理
,
生成响应给到用户
。
如图
所示
,
Serverless
的运行方式是按需运行
,
仅在设定的触发器上有事件产生时才会运行
。
图中左
侧
,
是用户将代码和配置提交到
Serverless
平台进行保
存
,
当设定好的事件产生后
,
针对每一个事件都会拉起
一个函数实例
,
实现触发式运行。
因为函数本身是托管型的,用户本身无法感知到实例在哪里运行。Serverless平台背后有个大的计算资源池,用户实例触发之后,平台会从资源池中随机选取可运行的位置,把用户的函数实例在对应位置上跑起来。因此,整个调度过程或者事件来临之后的函数运行环境的扩缩容过程,都是由平台进行的。对用户来说,调度的粒度更细了,而且调度也都托管给平台了,用户自身只需考虑功能的实现,而一切和运维相关的问题都可以由平台的提供商来解决。