云计算、FaaS与无服务器架构
无服务器Serverless架构和函数即服务Functions-as-a-Service(FaaS)已经成为云计算领域非常流行的概念。本文从云计算演变角度讨论无服务器架构的内在逻辑关系。
云计算之初是从数据中心开始,它抽象了物理主机环境,可以对硬件进行扩展,随着虚拟化的发展,我们开始在云环境中托管的虚拟机。将硬件和操作系统抽象为一个可扩展的单元,这就是IaaS,能够基于操作系统进行扩展,将硬件隐藏包装抽象起来;这之后不久,我们将主机托管环境建设到云上,能够直接基于应用进行扩展,将操作系统隐藏包装抽象起来了这就是PaaS。但这不是旅程的终点,现在我们已经迁移到函数或无服务器架构,这时基于函数进行扩展,同时将语言运行runtime封装隐藏起来了。
不同的云模型规定了不同职责,数据中心意味着我们可以完全负责所有事情,从硬件到应用都需要亲自参与;而当迁移到云时,我们需要所做的事情就越来越少。
函数是作为无服务器架构的抽象单元,隐藏了语言运行特性。我们不关心会耗费多少CPU或RAM来运行一个函数,我们只关注这个函数需要运行时间。所有其他指标都不应该打扰我们。我们编写函数功能,将其发布到云上,只需支付这些函数运行时间费用。
无服务器架构并不严格指定我们的函数在技术上必须是什么。它只是一个工作单元。函数能被以很多方式触发。它也可以是一个定期运行的计时器,也可以是一些相关HTTP请求或服务中的事件。
在Serverless Architectures一文中,Mike Roberts提出了functions-as-a-service六个特点:
1. 从根本上说,FaaS无需管理你自己服务器系统和服务器应用就可以运行后端代码。
2. FaaS无需使用框架和库包,FaaS函数就是带有语言和环境的正常应用。
3. 既然我们没有服务器应用需要运行,部署就非常不同于传统的系统,我们上传代码的FAAS供应商,它就做剩余的事情。
4. 水平扩展是完全自动的,弹性的,并由供应商管理。
5. FaaS是由供应商定义的事件类型触发的函数。
6.大多数供应商也允许函数对HTTP请求触发相对应的响应,通常以某种API网关形式实现。
Adrian Cockroft在其Tweet定义“无服务器”概念是:
如果你的PaaS可以在20ms内启动实例,并运行半秒,那么它就可以称为无服务器。
由此,我们可以得出这样的结论:长期运行的工作流程和其他大量的任务并不适合无服务器架构。
以下是一些供应商提供FaaS:
微软Azure函数
亚马逊——AWS Lambda
Auth0–Webtask
Iron.io–IronWorker
Planet Rational–WebScript
无服务器架构允许我们构建的代码做一些有用的事情,并同时,跑得很快又不消耗大量的服务器资源。这并不意味着FaaS只适用小场合。虽然函数是一个小的单元,它可以每秒被调用数百万次。
相关推荐
ruancw 2020-11-10
litefish 2020-10-16
hkykybtg 2020-11-20
老陈小安 2020-11-25
IT互联网技术学习 2020-11-18
85433664 2020-11-17
zcy 2020-11-16
云计算 2020-11-16
星月情缘 2020-11-13
sqisydream 2020-11-11
umengren 2020-11-11
爱尔兰咖啡 2020-11-11
tommyhp 2020-11-11
Ezenwang 2020-11-11
ZYWL 2020-11-06
郑贺腾讯社交广告 2020-11-06
腾讯soso团队 2020-11-06
Apsaravod 2020-11-05
跳舞的芒果 2020-11-03