无服务器计算是一种按需提供后端服务的方法。服务器仍在使用,但是从无服务器的提供商那里获得后端服务的公司是根据使用情况收费的,而不是按固定的带宽或服务器数量收费。
阅读本文后,您将能够:
复制文章链接
无服务器计算是一种按需提供后端服务的方法。无服务器提供者允许用户编写和部署代码,而不必担心底层基础设施。从无服务器提供商获得后端服务的公司将根据计算量来付费,由于这种服务是自动扩展的,不必预留和付费购买固定数量的带宽或服务器。请注意,虽然名为“无服务器”,实际上依然需要物理服务器,只不过开发人员不需要考虑服务器而已。
在 Web早期,任何想要构建 Web 应用的人都必须拥有运行服务器所需的物理硬件,这是一项繁琐而昂贵的工作。
然后是云计算,可供远程租用固定数量的服务器或服务器空间。租用这些固定服务器空间的开发人员和公司通常会过度采购,以确保其应用不会因为流量或活动的激增超过每月限额而中断。这意味着所购买的大部分服务器空间可能被浪费。云供应商已经引入了自动扩展模型来解决该问题,但是即使使用了自动扩展,也可能因为恶意活动激增(例如 DDoS 攻击)而产生非常高昂的成本。
无服务器计算允许开发人员在灵活的“按需付费”的基础上购买后端服务,这意味着开发人员仅需为使用的服务付费。这就像从每月固定限额的手机数据套餐切换到只为实际使用的每个字节数据收费的套餐一样。
“无服务器”一词在某种程度上具有误导性,因为它仍然有服务器提供这些后端服务,但是所有服务器空间和基础设施问题都由提供商处理。无服务器意味着开发人员可以完全不用担心服务器。
应用开发通常分为两个领域:前端和后端。前端是用户看到并与之交互的应用部分,例如视觉设计。后端是用户看不到的部分。其中包括应用文件所在的服务器以及持久存储用户数据和业务逻辑的数据库。
例如,让我们想象一个销售音乐会门票的网站。当用户在浏览器窗口中输入网站地址时,浏览器向后端服务器发送请求,后端服务器用网站数据进行响应。然后,用户将看到网站的前端,其中可能包括文本、图像和供用户填写的表单字段。然后,用户可以与前端上的表单字段之一进行交互,以搜索他们喜欢的音乐表演。当用户单击“提交”时,将触发另一个对后端的请求。后端代码检查其数据库,以查看是否存在具有该名称的表演者,如果存在,则会反馈下次表演的时间以及有多少可售的票。然后,后端会将数据传递回前端,前端将以用户能理解的方式显示结果。同样,当用户创建一个帐户并输入财务信息以购买票时,前端与后端之间将发生另一次来回通信。
大多数无服务器提供商都为其客户提供数据库和存储服务,并且许多无服务器提供商还拥有函数即服务(FaaS)平台,例如 Cloudflare Workers。FaaS 允许开发人员在网络边缘运行小段代码。使用 FaaS,开发人员可以构建模块化的架构,使代码库更具有可扩展性性,而不必花费资源维护底层后端。进一步了解 FaaS >>
进一步了解无服务器计算的优势。
两种常与无服务器计算混为一谈的技术是后端即服务和平台即服务。尽管存在相似之处,这些模型不一定能满足无服务器计算的要求。
后端即服务(BaaS)服务模型中,云提供商提供数据存储等后端服务,以便开发人员能专注于编写前端代码。但无服务器应用受事件驱动并在边缘运行,BaaS 应用可能并不满足这两个条件中的任何一个。进一步了解 BaaS >>
平台即服务(PaaS)服务模型中,开发人员从云提供商租用所有必要的工具来开发和部署应用,包括操作系统和中间件等。但 PaaS 应用扩展不能象无服务器应用那样轻松扩展。PaaS 也不一定在边缘运行,且往往有明显的启动延迟,这在无服务器应用中是不存在的。进一步了解 PaaS >>
基础设施即服务(IaaS)是一个笼统的术语,泛指代表客户托管基础设施的云供应商。IaaS 提供商可能提供无服务器功能,但两者并不同义。进一步了解 IaaS >>
随着无服务器提供商提出解决方案以克服其一些缺点,无服务器计算继续发展。其中一个缺点是冷启动。
通常情况下,当某个无服务器函数在一段时间内未被调用时,提供商会将其关闭以节省能源和避免过度配置。下次有用户运行一个调用该函数的应用时,无服务器提供商将必须重新启动并重新开始托管该函数。这个启动时间增加明显的延迟,称为“冷启动”。
一旦函数启动并运行,它在后续请求中将获得更快的服务速度(热启动),但如果在一段时间内没有再次被请求,就会重新进入休眠。这意味着下一个请求该函数的用户将经历冷启动。直到最近,冷启动仍被认为是使用无服务器函数的一个必要权衡。
Cloudflare Workers 已通过在 TLS 握手阶段提前启动无服务器函数来解决这个问题。由于 Workers 函数在边缘上启动的时间非常短,甚至小于完成握手所需的时间,结果就是一个零冷启动的 FaaS 平台。要开始使用 Cloudflare Workers,请查阅我们的开发人员文档。
随着越来越多使用无服务器计算的缺点得到解决,以及边缘计算进一步普及,我们预期无服务器架构将得到更广泛的应用。