无服务器计算是一种云模型,开发人员无需购买、管理或维护服务器即可编写和运行代码。尽管名为无服务器计算,但它仍然涉及服务器,但所有底层基础设施(服务器、操作系统、虚拟机和容器)均由云服务提供商管理。用户通常按使用量付费,这通常可以节省成本。在本文中,我们将探讨无服务器计算、其工作原理以及其优缺点。
无服务器计算是一种云计算模型,它使软件工程师能够构建和运行应用程序,而无需担心配置、扩展、保护和管理后端。在无服务器模型中,服务器配置和维护的责任在于云提供商,他们根据需要管理和启动所需的计算基础设施(服务器、数据库和容器)。无服务器和基础设施即服务 (IaaS) 是云的组成部分。
与名称所暗示的相反,“无服务器”一词并不意味着不使用服务器。相反,服务器是托管无服务器服务不可或缺的一部分!
“无服务器”是指客户团队不关心服务器。这与传统的 IaaS 模式形成鲜明对比,在传统模式下,企业购买并管理服务器容量。相反,企业的 DevOps 团队可以专注于编写应用代码并将其打包到供应商的容器中,而不必担心服务器。
部署在无服务器架构中的应用程序具有多种特性:无主机、弹性、事件驱动、短暂和无状态。让我们来看看这些术语的含义。
这些特性使无服务器模型在现代软件开发中非常有用。由于主机抽象、几乎无限的水平扩展、高数据和流量速度以及减少的攻击面,无服务器计算是多种用例的理想选择。
让我们更详细地研究无服务器计算所涉及的六个阶段,以便从开发人员和提供商的角度了解它的工作原理。
此过程始于无服务器提供商提供仪表板和预构建的后端元素,以便高效运行其无服务器应用。开发人员编写应用代码,其中包括指定应用如何响应各种查询的命令。然后,开发人员将代码上传到服务提供商的帐户。
例如,假设您想构建一个无服务器游戏应用程序。您将在服务提供商处创建一个无服务器帐户,并在提供商提供的预打包模板中编写应用程序代码。代码将包含命令,指定当用户单击特定游戏角色(例如赛车)或请求单人游戏而非多人游戏时应用程序应该做什么。代码将编写在一个文件中,例如 Go 或 Node.js,您的应用程序和云基础架构在其中定义并存储为代码。然后,您将打开命令行界面 (CLI) 并将打包的应用程序(包括代码、事件源和 API 网关)上传到您的帐户。
上传应用代码后,开发人员可以定义事件触发器。事件是“if-then”对象,其中包含有关如何以及何时触发应用代码的信息,例如队列、HTTP 请求、GET 请求和 API 调用。
当无服务器应用程序检测到队列消息时,它会轮询队列、读取消息并触发应用程序代码。根据服务提供商的不同,您可以将单个应用程序配置为由多个事件触发。
例如,您可以将游戏应用配置为在检测到应用内购买请求时使用消息队列触发应用代码。您还可以在用户尝试获取其得分历史记录时使用 GET 请求触发应用代码。GET 请求构造客户端响应,这对于生成得分历史记录和银行交易历史记录等元素非常重要。
软件接收用户请求并根据预定义的事件触发器触发应用程序。让我们考虑 HTTP 请求事件类型。假设用户发起 HTTP 请求;软件拦截该请求并触发应用程序。
回到游戏应用程序示例,为了使消息队列和 GET 请求按指定方式运行,软件或负载均衡器必须首先拦截用户请求并确定请求类型(例如,应用内购买或分数历史记录),然后通过触发应用程序代码进行响应。
一旦应用程序被触发,它就会将事件传递给云提供商,云提供商会启动所需数量的容器并分配满足用户请求所需的资源。
假设您的游戏应用的流量在 15,000 到 110,000 之间。目前有 20,000 个用户,用户发出各种请求 - 进行购买、选择角色、选择功能和查看记分牌 - 每个请求都构成一个微服务。随着流量的增加,提供商确保及时启动资源以响应不断增加的请求数量。提供商还会启动运行每个微服务所需的容器。
然后,容器从数据存储中提取请求的信息并将其发送到 API 网关。从那里,它被转发到网页,为用户提供查询响应。
此时,您的游戏应用的用户(请求其得分历史记录、尝试开始新游戏或进行应用内购买)的请求都会得到满足。
所有请求都得到处理后,所有容器及其数据都将被删除,当新事件触发应用程序代码时(例如,检测到传入请求时),它们将再次启动。这称为零扩展(容器缩放到零),是自动扩展的一个子集。
您可以向无服务器架构提供指标,以便根据游戏应用上的用户数量变化来增加或减少资源。例如,您可以使用每个容器的平均请求数或传入请求的平均处理时间等指标。
无服务器架构由各种服务类型组成,包括 FaaS、CaaS、边缘计算和 DbaaS,它们由上面讨论的无服务器功能统一起来。
无服务器计算和基础设施即服务 (IaaS) 都是著名的云计算模型,主要区别在于扩展机制和成本效益。让我们在下表中仔细看看它们。
无服务器加速应用程序部署,消除配置和管理云资源的压力,并减少云浪费。
虽然好处颇多,但外包服务器管理也可能存在一些缺点。
无服务器架构,即云服务提供商承担服务器安装和维护的角色,为医疗、金融、电子商务和技术服务等各个行业的企业用户带来了诸多好处。它减少了工程团队的维护任务。
信息来源:https://gcore.com/learning/what-is-serverless-computing/