Fastify 应用中如何使用 Serverless 进行无服务器部署

阅读时长 7 分钟读完

前言

随着云计算技术的不断发展,无服务器(Serverless)计算越来越受到关注。Serverless 架构不仅可以降低开发人员的负担,还可以显著降低运行成本。Fastify 是一款高效且低开销的 Node.js Web 框架,具有出色的性能,而 Serverless 则提供了一种全新的部署方式。本文将介绍如何在 Fastify 应用中使用 Serverless 进行无服务器部署。

什么是 Serverless?

Serverless 不是一种新型技术或框架,而是一种更高级别的软件架构。它的主要目标是降低和简化开发人员对于系统运维的工作量。不同于传统的基于服务器的 Web 应用,Serverless 应用只需要编写业务代码,而不关心底层的服务器配置和管理。

Serverless 架构的核心是函数即服务(Function as a Service,FaaS)。在传统的 Web 应用中,我们需要搭建一台或者多台服务器来运行应用程序,而在 Serverless 架构中,我们只需要编写函数代码,并将其部署到服务器提供商的平台上。在需要计算服务的时候,服务器提供商会自动、动态地调用并运行代码,而代码的拥有者可以只支付实际用到的计算资源费用。这种方式避免了在没有访问请求的时候浪费计算资源的情况,从而降低了成本。

为何选择 Serverless?

使用 Serverless 带来的主要好处有:

  1. 简化部署和维护 服务器的配置、升级、监控等问题都由服务器厂商处理,开发者只需要关注业务代码,从而大大简化了工作量。

  2. 计算资源更为高效 Serverless 提供了一个动态的、处理请求的机制,允许开发者按需调用计算资源。

  3. 成本更低 开发者只需要支付实际用到的计算资源费用,没有访问请求时不需支付计算资源费用,降低了开销。

介绍 Fastify

Fastify 是一个高效、低开销的 Node.js Web 框架。Fastify 注重性能,编写的代码运行速度快,同时具有易于维护和扩展等优点。以下是 Fastify 的主要特点:

  1. 高效 Fastify 在响应请求时执行速度非常快,和其他 Node.js Web 框架相比,具有出色的性能。

  2. 低开销 Fastify 能够处理大量并发的请求,同时占用较少的计算资源。

  3. 原生的插件系统 Fastify 的插件系统是原生的、轻量级的,方便快速开发及扩展。

在 Fastify 应用中使用 Serverless 进行无服务器部署

本节将介绍如何在 Fastify 应用中使用 Serverless 进行无服务器部署,我们将使用阿里云的函数计算(Function Compute)作为示例。

安装相关依赖

编写 Fastify 应用程序

我们先来编写一个简单的 Fastify 应用程序,在根目录下创建 app.js 文件,并输入以下代码:

-- -------------------- ---- -------
----- ------- - --------------------

---------------- ----- --------- ------ -- -
  ------ - ------ ------- -
--

-------------------- ----- -------- -- -
  -- ----- ----- ---
  ------------------- --------- -- ------------
--

应用程序非常简单,仅仅是返回一个 JSON 对象。

部署 Fastify 应用程序到阿里云函数计算中

在部署 Fastify 应用程序到阿里云函数计算之前,我们需要将 Fastify 应用程序打包为一个 zip 文件。可以使用 zip 命令进行打包。

在本地命令行中输出 app.zip 文件中包含的文件:

-- -------------------- ---- -------
--------  -------
  ------      ----    ----    ----
---------  ---------- -----   ----
      ---  ---------- -----   ------
     ----  ---------- -----   -------------------------
    -----  ---------- -----   ------------------------------------
      ---  ---------- -----   -----------------------------
       --  ---------- -----   ---------------------------------
--------------
---------                     -------
   ------                     -- -----

可以看出,文件大小为约 950K。接下来,我们使用阿里云的控制台来创建函数服务。

  1. 登录阿里云控制台,搜索 "函数计算"。
  2. 点击 "创建服务" 按钮。
  3. 填写服务名称,代码包是刚才压缩好的 app.zip 。
  4. 填写函数名称、资源、运行时等基本信息并保存。

部署完成后,控制台会输出服务地址。我们可以通过浏览器或者命令行工具访问该地址,从而测试 Fastify 应用程序在 Serverless 上的运行情况。

添加 API 网关

如果直接访问 Serverless 的地址,我们需要手动地在访问的 URL 中添加一些参数,否则可能无法被正常响应。所以我们需要配置 API 网关,API 网关提供域名绑定、鉴权、限流、日志等功能。在阿里云控制台上,我们可以轻松地创建和绑定 API 网关。

为 Fastify 应用程序连接 API 网关,我们可以使用 @midwayjs/faas-gateway-middleware 中间件来快速实现。在 app.js 中添加以下代码:

添加 HTTP 触发器

添加 HTTP 触发器能够让我们更方便地访问 Serverless 应用程序。在 app.js 中添加以下代码:

以上代码使用了 @midwayjs/serverless-fc-trigger 中间件,该中间件为 Fastify 插件提供了无需修改代码即可获得函数计算的便捷渠道,当 HTTP 触发器触发后,该中间件会根据请求的参数调用相应的函数。

部署含触发器的应用程序到阿里云函数计算

部署含有 API网关和 HTTP 触发器 的应用程序到阿里云函数计算,我们需要重新将应用程序打包为 zip,然后将其上传到阿里云。我们可以在阿里云函数计算的控制台上创建函数服务,并在函数配置中添加 HTTP 触发器,从而完成上传和部署操作。

调用 Fastify 应用程序

Fastify 应用程序在部署到无服务器平台之后,我们需要通过 API 网关或函数计算命令行工具等方式调用应用程序。

假设我们使用函数计算工具 fcli 来调用 Fastify 应用程序,向 /invoke 发送 POST 请求即可调用应用程序。示例代码如下:

在以上命令中,service-namefunction-name 分别为创建的阿里云函数计算的服务名和函数名。

总结

本文介绍了 Fastify 应用中如何使用 Serverless 进行无服务器部署,并包含了详细的示例代码和概念解释。Serverless 是一种越来越流行的计算方式,能够大大降低成本和开发难度,值得开发者和企业进行尝试。如有任何问题或建议,欢迎在下方评论区留言。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ffb0e995b1f8cacde01933

纠错
反馈