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

前言

随着云计算技术的不断发展,无服务器(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


猜你喜欢

  • ECMAScript 2021 (ES12) 中的 String.prototype.trimStart() 和 String.prototype.trimEnd() 方法详解

    ES12是新一代的ECMAScript,其中包含了一些新增的方法来方便前端工程师的开发。在ES12中,新增加了String.prototype.trimStart()和String.prototype...

    1 年前
  • CSS Flexbox:如何使用 order 属性改变元素顺序?

    在前端开发中,CSS Flexbox 是一种非常强大的布局工具。Flexbox 不仅简单易学,而且可以方便地处理各种布局需求。其中,order 属性是一项非常重要的特性,它可以轻松地改变元素在布局中的...

    1 年前
  • 用 ES9 的字符串填充方法解决 JavaScript 数学运算的格式化问题

    引言 在前端开发中,经常需要对数字进行格式化输出,例如显示为货币格式、百分比格式等。如果直接将数字转为字符串,很难满足这些需求,需要使用特定的格式化方法。而 ES9 引入了字符串填充方法,使得数值格式...

    1 年前
  • Mocha 测试套件如何对多个测试用例设置相同的前置条件?

    Mocha 测试套件如何对多个测试用例设置相同的前置条件? 在前端开发中,我们经常需要编写单元测试以保证代码的质量和可靠性。Mocha 是一个流行的 JavaScript 测试框架,它支持多种测试运行...

    1 年前
  • 立即上手:使用 Angular 构建 Web 组件

    随着现代 Web 开发的进步,越来越多的开发者开始选择使用前端框架来构建应用程序。Angular 是目前最流行的前端框架之一,因为它的能力和性能都非常出色。在本文中,我们将介绍如何使用 Angular...

    1 年前
  • React 项目中使用 Babel 解析 ES6 代码时出现 `Unexpected token...jump` 是什么原因呢?

    背景 在开发 React 项目时,我们通常使用 Babel 来将 ES6+ 语法编译成可在浏览器中执行的 ES5 语法。然而,有时我们会遇到这样的错误信息:"Unexpected token...ju...

    1 年前
  • RESTful API 中快速实现 Swagger 自动生成 API 文档

    什么是 Swagger Swagger 是一种用于描述和记录 RESTful API 的框架和规范,具有自动生成 API 文档的功能。开发RESTful API 时,我们可以使用 Swagger 规范...

    1 年前
  • PWA 应用如何克服由浏览器安全策略引起的问题?

    什么是 PWA 应用? PWA(Progressive Web App,渐进式网页应用)是一种 Web 应用程序的体验,用户可以通过浏览器访问,但拥有原生应用程序的感觉。

    1 年前
  • Windows 上 Docker 安装及使用全介绍

    什么是 Docker? Docker 是一种开发、打包和运行应用程序的工具。它能够将应用程序及其依赖包装成一个容器,从而提供了更好的应用程序部署和管理方式。 通过使用 Docker,我们可以在同一台主...

    1 年前
  • Serverless 框架的价值与实践

    在传统的Web开发中,我们通常需要自己搭建Web服务器以及编写一些繁琐的代码,这样会占用大量的开发时间。Serverless框架的出现,给我们提供了一种简洁高效的解决方案,它通过抽象出底层的服务器和数...

    1 年前
  • 如何使用 Headless CMS 和 Next.js 构建灵活的电商平台

    在当今互联网时代,电商已经成为了商业发展的重要方向之一。而在电商平台的建设过程中,前端的技术扮演着至关重要的角色。如何使用 Headless CMS 和 Next.js 构建灵活的电商平台,就是我们今...

    1 年前
  • Fastify 中如何使用 Sentry 进行异常监控

    在前端开发中,异常监控是一项非常重要的工作。它可以帮助我们快速定位和解决问题,提升网站的稳定性和可靠性。本文将介绍如何在 Fastify 中使用 Sentry 进行异常监控。

    1 年前
  • 应用 ECMAScript 2019 的 Object.entries() 和 reduce 函数实现对象过滤与变形

    应用 ECMAScript 2019 的 Object.entries() 和 reduce 函数实现对象过滤与变形 随着前端开发技术的不断更新和发展,越来越多的新技术被引入到了前端开发中。

    1 年前
  • TypeScript 中如何处理 JSON 数据

    JSON(JavaScript 对象表示法)是在 Web 开发中最常用的数据交换格式之一。TypeScript 对 JSON 数据的处理提供了更好的类型检查和代码提示,同时也减少了出错的风险。

    1 年前
  • 在Angular应用程序中解决跨域及“无法找到”错误

    在开发前端应用程序时,我们经常会遇到跨域及“无法找到”错误。这些错误往往会让我们失去耐心,浪费大量时间和精力去寻找解决方案。本文主要介绍如何在 Angular 应用程序中调试和解决这些错误。

    1 年前
  • Mongoose 判断数据是否存在的方法

    Mongoose 是一个流行的 Node.js 框架,用于在 MongoDB 数据库中进行对象建模。它提供了一种方便的方式来连接 MongoDB 数据库,并对其进行 CRUD 操作。

    1 年前
  • 解决 SSE 在 HTTPS 环境下连接不上的问题

    前言 SSE(Server-Sent Events)是一种基于 HTTP 协议的服务器推送技术,通常用于实时更新网页内容。在使用 SSE 时,如果网站采用了 HTTPS 协议,就可能遇到连接不上的问题...

    1 年前
  • LESS 中使用变量和混合器的指南

    在前端开发中,常常会用到 CSS 预处理器的工具,如 LESS、Sass 和 Stylus 等,它们可以让 CSS 更加易于维护和扩展。LESS 是其中较为流行的一种,它的变量和混合器功能能够帮助开发...

    1 年前
  • 如何处理 Node.js 中的 HTTP 请求超时问题

    如何处理 Node.js 中的 HTTP 请求超时问题 在现代 web 应用程序中,与服务器的 HTTP 请求是不可避免的。但是,当网络状况不佳或服务器无响应时,经常会发生请求超时的情况。

    1 年前
  • CSS Grid 布局:如何实现网格中心对齐

    随着网页设计变得越来越注重响应式布局,CSS Grid 布局成为了许多前端工程师的首选。CSS Grid 布局是一种二维网格布局方式,可以轻松实现复杂的布局需求。本文就来讲讲如何使用 CSS Grid...

    1 年前

相关推荐

    暂无文章