Serverless 架构下的事件驱动架构

随着云计算技术的快速发展,Serverless 架构在最近几年间成为了很热门的话题。Serverless 架构的优点包括快速上线、高可扩展性、低成本等方面,它为开发者提供了全新的开发方式以及对传统架构的巨大改变。Serverless 架构在有集成功能的同时也可以添加更多的移动性以及更快的响应能力。而事件驱动的 Serverless 架构则是 Serverless 架构的一种应用,它可以帮助开发者快速应对多种事件,包括跨系统的 API 调用、数据库变更、端点变更、消息队列、并完成各种语言的任务。

什么是事件驱动 Serverless 架构

事件驱动 Serverless 架构是采用事件驱动的编程模式集成的 Serverless 框架。其中事件是指一系列状况发生,比如用户提交一个订单,或者文件发生变更。当事件触发时,Serverless 平台进行相应的处理及返回反馈(可自动生成电子邮件,发送 discord 消息,甚至触发更多的微服务)。

Serverless 架构中,使用的是 BaaS(Backend as a Service)提供商的服务,开发者将不再关注服务器架构及运维细节,而是更好地聚焦应用开发。相对于传统的云计算架构,Serverless 架构摆脱了服务器基础架构的束缚,节约了运维部署资源,让开发者更方便地快速部署应用,实现 Serverless 操作。

事件驱动 Serverless 架构的优点

1. 提供更快的应用场景响应能力

事件驱动的Serverless架构可以立即回应变更,可以通过云科技更快地响应事件。使用异步事件驱动的办法是一种解决问题的方法,在微服务中更好的协调,同时也让开发者更方便地分担任务,大幅度地提高了应用的稳定性 。

2. 节省成本

随着事件驱动 Serverless框架下,需要使用的资源大量减少,这对于在云端工作的应用程序而言是非常有利的。在使用 Serverless 架构下,开发者可以大大减少前期开发与部署所需要的时间以及成本。

3. 更高的可扩展性

事件驱动 Serverless 架构是云应用的一个严密结构,它能够将应用程序划分为一系列的微服务,并通过 Serverless 方式进行进行调用。在进行应用程序构建的过程中,开发者不需要考虑代码层面的问题,甚至不需要去考虑预测未来可能遇到的问题,而是将应用程序看做一系列的无状态的微服务。最后,所有的微服务会组合成一个完整的应用程序,非常方便我们进行扩展。

使用 Serverless 框架构建事件驱动程序

接下来,我们将采用 Serverless 框架来快速构建出一个事件驱动程序。本次实战案例为编写一个「商品销售」的消息通知系统,该系统将根据订单提交情况,通过邮件或短信的方式通知客户信息。

1.前提条件

在构建事件驱动 Serverless 应用之前,我们需要有以下基础条件:

  • Node.js 开发环境

  • Serverless Framework 以及相关组件

  • AWS 账号登录信息获取

2. 配置 serverless.yml

我们使用的是 Serverless Framework 上的 AWS Lambda 服务。serverless.yml 文件是 Serverless Framework 的配置文件,建立一个事件驱动程序前,我们首先需要设置该配置文件。

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

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

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

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

3. 配置 Lambda 函数处理程序

我们初次构建了一个 Serverless 存储桶以及对应的事件触发机制。那么,我们下一步要做的,是建立一个相对应的 Lambda 函数来对该存储桶对应的事件进行现场处理。如下所示:

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

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

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

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

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

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

这个 Lambda 函数处理程序很简单。当事件触发后,我们对返回的内容进行处理,根据具体的应用条件,执行相对应的操作。

4. 进行部署、管理、调度

当 Serverless Framework 界面上已经准备好了需要使用的相关组件后,便可以成功地执行 Serverless 应用的部署、管理、调度等其他工作。此时,我们可以非常方便地管理相关应用。

总结

在这篇文章中,我们学习了什么是事件驱动 Serverless 架构,并使用 AWS Serverless 架构设计一个简单的服务。在 Serverless 的时代里,开发者们将不再需要基础架构、部署和管理工作等现状,可以专注于业务逻辑的实现,不必过于担心部署、管理架构问题。本案例简明明了事件驱动 Serverless 架构极致稳定的运行,有效地提升了开发者对于应用架构的开发效率。

通过使用 Serverless Framework 可以非常方便地快速构建出相关应用。在这里,我们分享了基本的内容以及应用操作流程,并希望开发者们可以在实际过程中,根据自己的需求构建出相对应、符合自己业务的 Serverless 应用。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64e01cc8f6b2d6eab3b370e2


猜你喜欢

  • TypeScript 中基于 Node.js 的服务器端开发实践

    简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,因为其高效性能和易于开发的特点,在 Web 开发中得到了广泛应用。而 TypeScript 是一个静态类...

    1 年前
  • Socket.io 异常断开连接解决方案

    在前端开发中,Socket.io 是一个非常有用的工具,它为我们提供了一种实时通信的方式,让我们的网站或者应用程序变得更加动态和互动。但是在使用 Socket.io 的过程中,常常会遇到异常断开连接的...

    1 年前
  • Next.js 如何实现 “按需加载” 组件

    在前端开发中,如何优化页面性能是一个非常重要的问题。其中,按需加载(Lazy Loading)是一种常见的优化方式。Next.js 是一个非常流行的 React 框架,它提供了一种方便的方式来实现按需...

    1 年前
  • Mongoose 之使用 $pull 操作符删除文档中的数组元素

    在 MongoDB 中,数组是常见的一种数据类型。而在 Mongoose 中,则可以使用 $pull 操作符删除文档中的数组元素。 $pull 操作符的基本语法 $pull 操作符可以用于从数组中删除...

    1 年前
  • 异步编程进阶 —— 探究 ES8 中的 async 和 await

    随着 JavaScript 应用程序的复杂性快速增长,异步编程已经成为了前端开发中不可避免的话题。虽然 JavaScript 提供了回调函数和 Promise 等构建异步代码的基本工具,但这些工具可能...

    1 年前
  • ES7 中的 Object.entries 方法在处理对象遍历中的应用

    ES7 中的 Object.entries 方法在处理对象遍历中的应用 在前端开发中,遍历对象是一项基本操作。ES6 带来了新的遍历方式,例如 for...of 和 forEach()。

    1 年前
  • 在 Angular 中使用 ngOnChanges 监听对象属性值的变化

    Angular 中 ngOnChanges 生命周期钩子函数被用来监听父子组件之间对象属性值的变化。通过使用 ngOnChanges 函数,我们能够在组件属性值发生变化时发出响应,以便对数据进行相应的...

    1 年前
  • 使用 ES11 中的 BigInt 类型进行交易计算

    随着区块链技术的发展,数字货币交易越来越普遍。在交易过程中,对于特别大的数字,JavaScript 原生的 Number 类型可能会导致精度问题。为了解决这个问题,ES11 引入了 BigInt 类型...

    1 年前
  • Kubernetes 中掌握常见的协调器(Controller)技巧

    Kubernetes 中掌握常见的协调器(Controller)技巧 Kubernetes 是一个开源的容器编排工具,可以帮助开发者自动化管理容器化的应用。在 Kubernetes 中,协调器(Con...

    1 年前
  • 解决 Fastify 应用程序因路由注册错误导致的问题

    在使用 Fastify 开发 Web 应用程序过程中,我们通常会将不同的路由分配给不同的处理程序函数。但是,由于一些常见的错误,我们经常会遇到应用程序运行时因路由注册错误而导致的问题。

    1 年前
  • 使用 LESS 编写优雅的 CSS

    前言 随着前端技术的发展,CSS 已经不再是一种简单的样式语言,而是有着丰富功能和复杂的结构。而LESS是一种主流的CSS预处理器,可以简化CSS编写并增加了一些强大的功能。

    1 年前
  • Angular 与 RxJS:如何更快开发更好的应用

    在现代的前端应用中,随着应用的复杂性不断提高,同时数据的交互和管理也变得越来越重要,开发者需要使用一些工具来帮助他们更好地管理应用状态和数据流。其中,RxJS 和 Angular 是两个非常有用的工具...

    1 年前
  • Deno 中的环境变量管理技巧

    在 Deno 中,环境变量是一种重要的配置管理方式。本文将介绍如何在 Deno 中管理环境变量,包括如何设置、读取和删除环境变量,并提供各种实用技巧和示例代码。 设置环境变量 在 Deno 中设置环境...

    1 年前
  • 优化 MySQL 查询语句的技巧和方法

    MySQL 是一款常用的关系型数据库,而数据库的性能和查询效率对于一个系统来说至关重要。在本文中,我们将探讨如何优化 MySQL 查询语句的技巧和方法。 索引的使用 索引是优化 MySQL 查询语句的...

    1 年前
  • 如何在 Angular 中使用 Server-Sent Events 实现实时数据推送

    实时数据推送在现代 web 应用程序中越来越普遍。在传统的 web 应用程序中,客户端多数使用定期轮询机制从服务器拉取新数据。这种方式不仅效率低下,而且浪费过多带宽和服务器资源。

    1 年前
  • PM2 如何处理进程崩溃和异常

    在前端开发中,我们常常需要启动多个进程来进行不同的任务。但是,这些进程出现崩溃和异常的情况是难以避免的。为了保障系统的稳定性和可靠性,我们需要使用一款工具来管理进程,而 PM2 就是一个非常优秀的选择...

    1 年前
  • ES12 JavaScript:使用输出运算符在 JavaScript 中进行调试

    在 JavaScript 中进行调试是前端开发中必不可少的步骤。ES12 JavaScript 提供了一个输出运算符,在调试中起到很大的帮助作用。本文将会详细介绍这个输出运算符并提供示例代码进行演示。

    1 年前
  • Webpack 构建时出现的 UglifyJsPlugin 相关错误该怎么办?

    在前端开发中,为了优化网站性能,我们经常使用 Webpack 进行代码打包和构建。而在 Webpack 构建时,经常会发现 UglifyJsPlugin 相关的错误,这些错误信息不仅影响开发效率,也影...

    1 年前
  • ES10 中解决 JavaScript 数字问题的方法介绍

    在 JavaScript 中,数字计算是很常见的问题。然而,由于浮点数的精度问题,数字计算时很容易出现错误,这给前端开发带来了困扰。ES10 中引入了一些新功能,可以有效地解决这些问题。

    1 年前
  • 使用 Mocha 和 Supertest 进行 RESTful API 集成测试的教程

    在前端开发中,RESTful API 是必不可少的一部分。为了确保 API 接口的健壮性、安全性和可靠性,我们需要写一些集成测试来验证接口的正确性。本文将介绍如何使用 Mocha 和 Supertes...

    1 年前

相关推荐

    暂无文章