无服务器计算是一个越来越受欢迎的范例,它可以把这种愿望变成一个合乎逻辑的结论:有了无服务器计算,你不需要知道运行代码的硬件或操作系统,因为服务提供商会为你全力以赴。无服务器计算是一种在没有X $ V x最终用户管理的基础架构上b A 0托管应用程序的新方式,是IaaE % 0 L W : O ) US(基础架构即服务)发展的下一个阶段。它将底层基础设施和开发人员分开,基本上虚拟化了运行时(一种虚拟机,一般指进程级虚拟机)和操作管理。这通常被称为Faan D Y ^ _ P X sS(功能即服务)。无服务器体系结G Q K 2 [ :构允许您执行给定的任务,而不用担心服务器、虚U t ;拟机S W A 0 u或底层计算资源。
1.无服务器计算的优缺点:- + H | r H |从这个描述中,我们应该清楚无服务器计算的两个最大好处:开发人员可以专注于他们编写的代码的业务目标,而不是基础设施问题;组织不是购买物理0 . I ; G g H r 5硬件或租用u ? U G b 3大多数闲置的云实例,而是以非常微妙M C s s 0 [ @ V 4的方式为实际的计算资源付费。
正如Bern5 D n b Zard Golden指出$ 3 l ^ \ F的,后一点对于事件驱动的应用程序特别有用。例如,您可能有一个长时间闲置的应用程序,但在某些情况下,您必须同时处理许多事件请求。或者,您可能有一个处理通过有限或间歇互联网连接从物联网设备发送的数据的应用程序。在这两种情况下,传统的方法都需要配置一台功能强大的服务器来处理峰值工作负载,但大多数情况下,服务器H i g #的利用率并没有得到充1 + / r分利用。使用a A ~ i无服务器架构,您只需要为实际的h C Y U + l #服务器资源付a 2 2 I l } S费。无服务器计算也适用于某些类型的批处理。无服务器架构用例的一个典型例子是上传和处理一系列单独的图像文h a q J 3 ^ + 7件并将它们发送到应用程序的另一部分的服务。
无服务器功能最M x J )明显的缺点可能是它们的寿命很短,正如AlexSoft所说,“不适合长期任务”。大多数无服务器提供程序不会让您的代码执行超^ V q v w G # p S过几分钟,并且当您启动一个函数时,它不会n n 1在先前运行的实例中保留任何有状态的数据。一个相关的问` e G H F题是,无服务器代码的启动可能需要几秒钟,这在许多情况下不是问题,但是如果您的应用程序需要低延迟,您应该得到警告。
正如Rohit Akiwatkar和Gary Arora指出的,许多其他缺点与供应商锁定有关。尽管开源选项可用,但无服务器市场仍由大型商业云提供商主导,我们将在后面讨论。这意味着开发人员通常最终会使用其供应商提供的工具,这使得他们很难在不满意的情况下进行切换。此外,根e 3 h R 5 r L {据定义,由于大量无服务器计算是在供应商的基础设施上进行的,因此很难将b ) 5 = Y无服务器代码集成到内部开发和测试管道中。
2.什么是无服务器计算?无服务器计算是云的执行模式,其中云提供商动态分配(然后向用户收费)仅执行特定代码所需的计算资源和存S a l Q $ @储。当然,服务器仍然参与其中,但是提供商的服务完全由服务器负责。在亚马逊倡导无服务器技术的Chris Munns在2017年的一次会议上表示,从团队编写和部署代码的角度来看,“根本没有服务器可以管理或配置。它不包含任何可能成为裸机、虚拟内容或容器的内容,任何涉及您管理主机、修补F 6 D / R主机] n ,或在操作系统级别执行任何处理的内容都不是您必须做的事情。一个无服务器的世界。”
正如开发人员Mike Roberts所解释的,这个术语曾经被用于所谓的“后端即服务”场景,在这种场景中,移动应用程序将连接到完全托管在云中的后端服务器。但是今天,当人们谈论无服务器计算或无服务器架构时,他们指的是功能即服务产品,在这种产品中,客户编写只处理业务逻辑的代码v T 3 V !,并将其上传到提供商。提供者负责所有硬件配置、虚拟机和容器管理,甚至多线程等任务,这些任务通常6 % % u - K L w内置于应用程序代码中。
无服务器功能是事件驱动的/ 4 v L 8 H,这意味着只有在请求触发时才调用代码。提供商只对执行所需的计X z n # # \算时间收费,不需要为维护物理服务器或虚拟服务器支付固定的月费。这些函数[ M I p V Q A可以连接在一起创建一个处理管道,或者它们可以用作更大应用程序的组件,并与运行在容器或常规服务器中的其他代码进行交互。
4.无服务器堆j p (栈:像许多软件领域一样,无服务器世界见证了软件堆栈的发展,它集成了构建无服务器应用程序所需的不同组件。U Z _每个堆栈都包含您将用来Q ~ M N = t ] G编写代码的编程语言、为代码提供结构的应用程序框架,以及平台将理解并用来启动代码执行的一组触发器。虽然您可以在每个类别中混合不同的特定产品,但根据您使用的供应商,会有一些限制。比如对于语言,可以在AWS Lambda上使用Node.js、Java、Go、C #和Pyj Z * 8 u ethon,但是只有JavaScript、C #和F #可以在Azure函数上本地运行。AWS Lambda拥有最长的触发器列表,但其中许多是特定于AWS平台的,例如Amazon Simple Email Service和AWS Code9 C e E +Commit。同g Y ] c 5 W时,谷歌云功能可以通过一般的HTTP请求触发。保罗·贾沃斯( U Z ) j e基深入研究了三种主要产品。
6.无服务器数据库:如上所述,使用无服务器代码的一个怪癖是没有持久状态,这意味着本地变量的Y ] D值在: * ] T b i i实例化过程中不会持久。您的代码需要访问的任何持久数据都必须存储在其他地方,堆栈中主要供应商可用的触发器包括您的函数可以与之交互的数g 3 I F据库。其中一些数据库被称为无服务器数据库。这意味着= A `它们的行为与我们在本文中讨论的其他无服务器函数非常相似,唯一明显的例外是数据被无限期存储。然而,许多涉及到数据库配置和维护的管理开销都被搁置了。正如开发人员Jeremy Daly所说,“您只需要配置集群,然后自动为您处理所有维护、打补丁、备份、复制和扩展。&rdq@ * a x M R 6 0uo;像“功能即服务”产品一样,您只需] b t g ~ + : a g要为实际计算时间付费,资源可以根据需要上下轮换。这三家无服务器提供商各自提供自己的无服务器数据库:亚马逊拥有Auror^ 9 u x 5a Serverles/ u ] ( c Z Ss和DynamoDB,微软拥有Azure CosmosDB,谷歌拥有Cloud Firestore。然而,这些并不是唯一可用的数据库。\ y .Nemanja Novkovic有更多产品的信息。
8.无服务器离线:您可能会发现开始使用无服务器计算的前景有些令人望H _ @ @ f ~ p而生畏,因为您似乎需要与供应商签订合同来体验它的工作原理。但是不要担心:| ] A 6 c ` X z !有很多方法可以在* N N e J V 4本地硬件上离U f x v & . , +线运行无2 R 6 p ( g ^服务器代码。例如,AWS SAM提供了允许您离线测试Lambda代P v f码的本地功L . b ` u能。此外,如果您使用的是无服务器应用程序框架,请检查允许您在本地运行代码的无服务器离线版。
6.无服务器供应商:AWSLambda、Azure函数和谷歌云函数:无服务器计算的现代时代始于2014M Q H @年基于亚马逊云服务的平台AWS Lambda的发布。微软在2016年推出了AzureFunctions。自2017年以来一直处于测试阶段的Googl- } a NeCloud Functions终于投入生产,并于2018年7月上线。这三种服务的局限性、优势、支持的语言和处理方式略有不同。RohitAkiwatkar详细描述了三者之间的区别。运行的是基于开源的ApacheOpenWhisk平台的IBM云函数。在所有的无服务器计算平台中,AWSLambdo Q } Ta是最突出的,显然也是发展成熟时间最多的。InfoZ R B GWorld涵盖5 \ 7 7 r了过去一年中AWS Lambda的更新和新增功能。
7.无服务器框架:它值得停留在; G S 9 _等式的框架部分,因为它将在很大程度上定义您最终将如何构建应用程序。亚马逊有自己的本地产品q j e 0 ) ,,即开源无服务器应用模型(SAM),但也_ . \ G 5 { O有其他产品,大部分是跨平台和开源的。最受欢迎的一个叫做(通常称为无q M . w f t服务器),强调它为每个支持的平台(AWS Lambda、Azure Functa / a d W 7 b %ions、Googlef . y ? E , \ \ } Cloud Functions和IBMopen晶须)提供相同的体验。另一个受欢迎的产品是Apex,它可以帮助一些提供商无法使用的语言陷入困境。
8.无服务器计算和Kubernetes:容器可以帮助无服务器技术在后台运行,但管理它们的成本是供应商的责任,因此用户看不见。许多人将无服务r v !器计算视为在不处理其复杂性的情况下获得容器化微服务的许多优势的一种方式,甚至开始谈论后容器世界。事实上,容器和无服务器计算几乎肯定会在未来许多年共存,事实上,无服务器功能可以与5 t b 8 R u j容器化微服务存在于同一个应用程序中。Kubernetes是最流行的容器编排平台,它也可以管理无服务器基础设施。事实上,使用KuU ] e I , . kbernetes,您可以在一个集群上集成不同类型的服务。租用服务器可咨询梦飞云idc了解。% i h & m