4年前 (2021-06-25)  Serverless |   抢沙发  587 
文章评分 0 次,平均分 0.0

什么是无服务器Serverless计算?

开发人员花了无数个小时用代码解决业务问题。接下来轮到ops团队花费无数的时间,首先要弄清楚如何让开发人员编写的代码在任何可用的计算机上运行,其次要确保这些计算机能够顺利运行。第二部分确实是一项永无止境的任务。为什么不把那部分留给别人呢?

在过去的二十年中,IT领域的许多创新都集中在虚拟机、云计算、容器上,以确保您不必过多考虑代码运行在其上的底层物理机。无服务器计算是一种越来越流行的范例,它将这种愿望带到了它的逻辑结论:有了无服务器计算,您不必知道任何关于您的代码所运行的硬件或操作系统的信息,因为所有这些都由服务提供商为您提供服务。

什么是无服务器Serverless计算?

无服务器计算(Serverless computing)是云计算的一种执行模式,在这种模式中,云提供商动态地分配执行特定代码所需的计算资源和存储,然后向用户收费。当然,仍然有服务器参与其中,但它们的供应和维护完全由提供商负责。亚马逊倡导无服务器的Chris Munns在2017年的一次会议上表示,从编写和部署代码的团队角度来看,

根本没有服务器需要管理或提供。这包括任何可能是裸机的东西、任何虚拟的东西、任何容器的东西任何涉及到管理主机、修补主机或处理操作系统级别的东西,都不是在无服务器的世界中必须做的事情。

正如开发人员mikeroberts解释的那样,这个术语曾经用于所谓的后端即服务场景,即移动应用程序将连接到完全托管在云中的后端服务器。但今天,当人们谈论无服务器计算或无服务器体系结构时,他们指的是功能即服务(function-as-a-service)产品,即客户编写的代码只处理业务逻辑,并将其上传给提供商。该提供者负责所有硬件资源调配、虚拟机和容器管理,甚至包括通常内置在应用程序代码中的多线程等任务。

无服务器函数是事件驱动的,这意味着只有在请求触发时才会调用代码。提供商只对执行所使用的计算时间收费,而不是对维护物理或虚拟服务器收取固定的每月费用。这些函数可以连接在一起创建一个处理管道,也可以作为更大应用程序的组件,与容器或传统服务器上运行的其他代码交互。

无服务器计算的优点和缺点

从这个描述来看,无服务器计算的两个最大好处应该很清楚:开发人员可以专注于他们编写的代码的业务目标,而不是基础设施问题;而且组织只会以非常精细的方式为实际使用的计算资源付费,而不是购买物理硬件或租用大部分闲置的云实例。

正如bernardgolden所指出的,后一点对事件驱动的应用程序特别有利。例如,您可能有一个应用程序大部分时间处于空闲状态,但在某些情况下必须同时处理多个事件请求。或者您可能有一个应用程序,它可以处理从具有有限或间歇性互联网连接的物联网设备发送的数据。在这两种情况下,传统的方法都需要配置一个能够处理峰值工作容量的健壮服务器,但该服务器在大多数情况下都没有得到充分利用。使用无服务器架构,您只需为实际使用的服务器资源付费。无服务器计算也适用于特定类型的批处理。无服务器架构用例的一个典型示例是一个服务,它上载和处理一系列单独的图像文件,并将它们发送到应用程序的另一部分。

也许无服务器函数最明显的缺点是它们有意短暂,正如AlexSoft所说,“不适合长期任务。”大多数无服务器提供程序不会让您的代码执行超过几分钟,当您启动一个函数时,它不保留以前运行的实例中的任何有状态数据。一个相关的问题是,无服务器代码可能需要几秒钟的时间来启动,这对于许多用例来说都不是问题,但是如果您的应用程序需要低延迟,请注意。

Rohit Akiwatkar和Gary Arora指出,许多其他不利因素与供应商锁定有关。尽管有开源的选择,但无服务器市场由大型商业云提供商主导,我们稍后将讨论这一点。这意味着开发人员最终往往会使用供应商提供的工具,这使得如果他们越来越不满意,就很难进行转换。而且,根据定义,由于许多无服务器计算都发生在供应商的基础设施上,因此很难将无服务器代码集成到内部开发和测试管道中。

无服务器供应商:AWS Lambda、Azure函数和Google云函数

无服务器计算的现代时代始于2014年推出基于亚马逊云服务的平台AWS Lambda。2016年,微软紧随其后推出Azure功能。自2017年开始测试的谷歌云功能终于在2018年7月进入生产状态。这三种服务的局限性略有不同,优点、支持的语言和做事方式。Rohit Akiwatkar对三者之间的区别有一个很好的详细的概述。同时运行的还有ibmcloud函数,它基于开放源码apacheopenwhisk平台。

在所有的无服务器计算平台中,aws lambda是最突出的,而且显然有最长的时间来发展和成熟。

无服务器Serverless堆栈

与许多软件领域的情况一样,无服务器世界已经见证了软件栈的演变,这些软件栈将构建无服务器应用程序所需的不同组件组合在一起。每个堆栈都由一种编程语言组成,您将用它来编写代码,一个为您的代码提供结构的应用程序框架,以及一组触发器,平台将理解并使用这些触发器来启动代码执行。

虽然您可以在每个类别中混合和匹配不同的特定产品,但根据您使用的供应商,存在一些限制,有些重叠。例如,对于语言,可以在AWS Lambda上使用Node.js、Java、Go、C#和Python,但只有JavaScript、C#和F#在Azure函数上本机工作。说到触发器,AWS Lambda的列表最长,但其中许多都是特定于AWS平台的,比如Amazon简单电子邮件服务和AWS CodeCommit;与此同时,Google云功能可以由通用HTTP请求触发。pauljaworski深入研究了三大产品中的每一个产品。

无服务器Serverless框架

值得在公式的框架部分停留一段时间,因为这将在很大程度上定义最终如何构建应用程序。Amazon有自己的本地产品,即开源无服务器应用程序模型(SAM),但也有其他产品,其中大多数是跨平台的,也是开源的。其中最流行的一种称为无服务器(Serverless),并强调它为每个受支持的平台(即AWS Lambda、Azure函数、Google云函数和IBM OpenWhisk)提供相同的体验。另一个受欢迎的产品是Apex,它可以帮助将某些提供商无法使用的语言引入竞争。

无服务器Serverless数据库

如上所述,使用无服务器代码的一个怪癖是没有持久状态,这意味着局部变量的值不会在实例化之间持久化。代码需要访问的任何持久性数据都必须存储在其他地方,而且主要供应商的堆栈中可用的触发器都包括函数可以与之交互的数据库。

其中一些数据库本身被称为无服务器数据库。这意味着它们的行为与我们在本文中讨论的其他无服务器函数非常相似,只有一个明显的例外,即数据是无限期存储的。但是,配置和维护数据库所涉及的大部分管理开销都被抛在了一边。正如开发人员Jeremy Daly所说,“你所需要做的就是配置一个集群,然后所有的维护、修补、备份、复制和扩展都会自动为你处理。”与“功能即服务”产品一样,你只需支付实际使用的计算时间,资源会根据需要上下旋转以满足需求。

三大无服务器提供商各自提供自己的无服务器数据库:亚马逊拥有Aurora无服务器和DynamoDB,微软拥有Azure Cosmos DB,谷歌拥有Cloud Firestore。不过,这些并不是唯一可用的数据库。Nemanja Novkovic有更多产品的信息。

无服务器Serverless计算与Kubernetes

容器有助于实现无服务器技术,但管理它们的开销由供应商负责,因此用户看不见。许多人将无服务器计算视为一种在不必处理其复杂性的情况下获得容器化微服务许多优势的方法,甚至开始谈论后容器世界。

事实上,容器和无服务器计算在未来几年几乎肯定会共存,事实上,无服务器功能可以与容器化微服务存在于同一个应用程序中。最流行的容器编排平台Kubernetes也可以管理无服务器基础设施。实际上,使用Kubernetes,您可以在单个集群上集成不同类型的服务。

无服务器Serverless脱机

您可能会发现开始使用无服务器计算的前景有点吓人,因为您似乎需要与一家供应商签约,看看它是如何工作的。但不要担心:有很多方法可以在本地硬件上离线运行无服务器代码。例如,AWS SAM提供了一个本地特性,允许您离线测试Lambda代码。如果您使用的是Serverless应用程序框架,请检查Serverless offline,它是一个允许您在本地运行代码的插件。

原文地址:https://www.infoworld.com/article/3406501/what-is-serverless-serverless-computing-explained.html

 

除特别注明外,本站所有文章均为老K的Java博客原创,转载请注明出处来自https://javakk.com/2056.html

关于

发表评论

表情 格式

暂无评论

登录

忘记密码 ?

切换登录

注册