无服务器架构和功能即服务(FaaS)是云计算的热门趋势。除微软和亚马逊外,还有许多其他供应商提供FaaS。本文是对无服务器架构的简单介绍,我会解释它是什么以及我们为什么需要它。

640?wx_fmt=png 云的演变

在其发展过程中,云具有多种形式和抽象级别。

640?wx_fmt=png

数据中心,无论是内部的还是由供应商作为服务提供的,都是我们今天所知道的云技术的第一步。它抽象了物理托管环境,我们开始使用硬件单元扩展这些环境。随着虚拟化的发展,我们开始在云环境中托管虚拟机。我们对硬件进行了抽象,并将操作系统作为等级单位。不久之后,我们将托管环境构建到云端,并抽象出操作系统。我们新的缩放单元就是应用程序。但这并不是终点,因为我们现在已经转向了功能或无服务器架构。

不同的云模型给我们留下了不同的责任。拥有数据中心意味着我们对正在进行的所有事务负全部责任。当迁移到云端时,进化过程中的每一步都会让我们的责任越来越少。

640?wx_fmt=png

无服务器架构实际上比SaaS晚,但它在图表中的SaaS之前,因为在SaaS的情况下,用户对应用程序或其基础结构没有任何控制权。

640?wx_fmt=png 无服务器架构

函数是无服务器体系结构中的缩放单位,它抽象语言运行时。我们不讨论运行函数需要多少CPU或RAM或任何其他资源。我们只讨论运行该函数所需的时间。所有其他指标都不应该困扰我们。我们编写函数,将它们发布到云端,并且只为这些函数运行的时间付费。

无服务器架构没有严格规定技术上必须具备的功能。这只是我们想要完成的一些工作单元。可以通过多种方式触发。它可以是定期运行函数的计时器,但它也可以是HTTP请求或某些相关服务中的某些事件。

640?wx_fmt=gif

在文章“无服务器架构”中,Mike Roberts提出了功能即服务(Faas)的六点:

1.从根本上说,FaaS是在不管理自己的服务器系统或自己的服务器应用程序的情况下运行后端代码。

2.FaaS产品不需要编码到特定的框架或库中。FaaS功能是语言和环境的常规应用程序。

3.由于我们没有服务器应用程序可以运行,因此部署与传统系统有很大不同 - 我们将代码上传到FaaS提供商,它可以完成其他所有工作。

4.水平扩展是完全自动的,弹性的,并由提供者管理。

5.FaaS中的函数由提供程序定义的事件类型触发。

6.大多数提供者还允许触发函数作为对入站HTTP请求的响应,通常在某种API网关中。

Adrian Cockroft在他的推文中定义了“无服务器” :

If your PaaS can efficiently start instances in 20ms that run for half a second, then call it serverless.

由此可以得出结论,长时间运行的工作流程和其他大型任务不适合无服务器架构。

640?wx_fmt=png 函数服务

已有公司将函数作为服务运行。以下是其中一些:


Microsoft - Azure

亚马逊 - AWS Lambda

Auth0 - webtask

Iron.io - IronWorker

Planet Rational - webscript


还有许多其他可用的服务,所有这些服务的技术能力和实现都各不相同。

总结

无服务器架构允许我们构建一些有用的代码,同时,在不消耗大量服务器资源的情况下快速运行。这并不意味着FaaS只能在小场景中使用。尽管函数是一个小单元,但它可以每秒调用数百万次。问题是,我们应该从应用程序的其他组件或层向FaaS转移哪些小功能。


640?wx_fmt=png

640?wx_fmt=gif

喜欢记得来一个

640?wx_fmt=gif

640?wx_fmt=jpeg

长按二维码 ▲

订阅「架构师小秘圈」公众号

如有启发,帮我点个在看,谢谢↓

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐