NPM 包 @bennadel/circuit-breaker 使用教程

AI 编程助手,豆包旗下的编程助手,提供智能补全、智能预测、智能问答等能力,节省开发时间,释放脑海中的创造力,支持 VSCode,点击体验 AI

前言

在以前的前端开发中,我们通常会使用 Ajax 请求接口来获取数据。但是,单纯的 Ajax 请求也存在一些问题,比如在服务端故障的情况下,前端一直等待返回结果,导致前端的应用程序失去响应能力。这时候使用断路器模式就能很好的解决这个问题。

@bennadel/circuit-breaker 是一个简单易用的断路器库,它可以在服务故障的情况下,为前端应用程序提供优秀的容错机制。

本文就来介绍一下如何使用 @bennadel/circuit-breaker 库来实现前端的断路器功能。

安装

要使用 @bennadel/circuit-breaker,我们需要首先安装该库,可以使用 npm 命令进行安装。

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

使用

创建 Circuit Breaker 对象

在使用 @bennadel/circuit-breaker 之前,我们需要先创建一个 CircuitBreaker 对象。我们可以使用以下方式来实现创建:

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

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

在创建 Circuit Breaker 对象时,我们需要传入一些参数:

  • failureThreshold: 请求失败阀值,指定在多少次请求失败之后,断路器将会启动,默认值是 3
  • successThreshold: 请求成功阀值,指定在多少次请求成功之后,断路器将会重置,默认值是 2
  • timeout: 请求超时时间,指定请求的最长等待时间,默认值是 3000 毫秒;
  • onOpen: 断路器启动回调函数,指定一个函数,在断路器启动时将会调用该函数;
  • onClose: 断路器关闭回调函数,指定一个函数,在断路器关闭时将会调用该函数。

包裹函数

在使用断路器时,我们需要把被保护的函数包裹在一个调用 CircuitBreaker 对象的函数中,如下所示:

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

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

首先将要保护的函数 fetchData 定义为一个异步函数,在内部使用 fetch 方法获取数据,然后返回数据。

然后定义一个新的函数 fetchDataWithCircuitBreaker,该函数是调用断路器的包裹函数。在 invoke 方法中传入 fetchData 函数作为参数,invoke 方法将会尝试执行该函数,如果函数正常执行,则断路器计数器中 success 的计数器增加,否则将增加 failure 的计数器。

功能测试

接下来我们来进行一些功能测试,看看 @bennadel/circuit-breaker 是否能够正常工作:

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

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

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

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

这里我们编写了三个测试用例:

第一个测试用例是在断路器打开的情况下,连续发起3次请求并接受响应。因为前两次请求都是失败的,所以我们会看到3条错误消息输出,然后断路器会关闭。

第二个测试用例我们连续发起2次请求,并且都接受到正常的响应,并输出 "Request succeeded." 信息。由于前两次请求都成功了,所以断路器稍后也会被重置。

第三个测试用例是在断路器部分打开的情况下,连续发起3次请求,并在第二次启动后关闭断路器。在代码中,我们使用了 reset() 方法来手动重置断路器。

总结

断路器是一个非常有用的容错机制,可以确保服务故障时应用程序不会失去响应能力。@bennadel/circuit-breaker 提供了一种可靠且易于使用的实现,能够帮助我们轻松地添加服务器故障保护机制。

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


猜你喜欢

  • npm 包 stemcstudio-markdown 使用教程

    在前端开发中,文档编写是非常重要的一环。而 Markdown 是一种常用的文档格式,它简单、易读、易写,同时也易于转换成 HTML 等其他格式。stemcstudio-markdown 是一款 npm...

    2 年前
  • npm 包 assistant-os 使用教程

    介绍 assistant-os 是一个开源的 Node.js 库,旨在帮助前端开发者快速构建命令行工具和可交互的 CLI 界面。该库提供了丰富的 API,包括命令行解析、交互式界面构建、日志处理、模板...

    2 年前
  • NPM 包 Jersey 使用教程

    在前端开发中,我们通常会使用不同的框架和库来简化我们所需要完成的工作。这些框架和库通常是由第三方开发者创建的,并以 NPM 包的形式提供。在这篇文章中,我们将介绍如何使用 Jersey 这个 NPM ...

    2 年前
  • npm包@cashstar/cstar-stylelint使用教程

    前言 随着Web前端技术的发展和日新月异,JavaScript、CSS和HTML等语言的精细化和复杂化程度越来越高,前端开发人员的编码效率和规范也面临着越来越高的要求。

    2 年前
  • npm 包 recur-fn 使用教程

    在前端开发中,我们常常需要进行一些重复性的操作,例如一个表单的验证、数据的筛选、视图的渲染等等。为了避免代码重复而造成工作效率低下,我们可以使用递归函数(recursive function)来解决问...

    2 年前
  • npm 包 pb-schema 使用教程

    什么是 pb-schema? pb-schema 是一个用于定义和序列化 protocol buffer 消息的 npm 包。它提供了一种简单的方式来定义 protocol buffer 消息结构,并...

    2 年前
  • npm 包 explorer-cli 使用教程

    npm(Node Package Manager)是 Node.js 的包管理器,用于发布、发现和安装 Node.js 模块。而 explorer-cli 是一个利用 npm 仓库数据,提供命令行交互...

    2 年前
  • npm 包 protobuf-jsonschema2 使用教程

    简介 protobuf-jsonschema2 是一个将 Protocol Buffers(PB)转换为 JSON schema 的 npm 包。在前端领域,PB 可以进行跨语言的数据传输,而 JSO...

    2 年前
  • npm 包 kehrwoche 使用教程

    简介 Kehrwoche 是一个非常实用的 npm 包,它可以让前端工程师更加便捷地管理项目中的状态。 在前端开发过程中,状态管理是一个非常重要的问题。在处理复杂的组件和应用程序时,状态管理可以使代码...

    2 年前
  • NPM 包 phpegjs 使用教程

    介绍 phpegjs 是一个基于 JavaScript 实现的解析器生成器,它可以用于生成 PHP 语言的解析器。该工具支持语法输入文件的自定义,让用户可以灵活地根据需求定制自己的解析器。

    2 年前
  • npm 包 cloudflare-zone 使用教程

    如果你使用 CloudFlare 来管理你的 DNS 记录,那么你可能会经常需要手动添加,修改和删除 DNS 记录。但是,如果你有很多域名和子域名,这将是一项繁重的工作。

    2 年前
  • npm 包 r-spider 使用教程

    r-spider 是一款基于 Node.js 的网页爬虫工具包。它可以模拟浏览器行为,从网页中获取数据,并且可以支持多线程处理。今天,我们将会从头到尾教你如何使用 r-spider 进行网页数据抓取。

    2 年前
  • npm 包 azure-openapi-linter 使用教程

    随着微服务架构的普及,OpenAPI 规范已经成为前后端协作的重要一环。然而,若 OpenAPI 规范不符合标准,将会影响 API 的可用性,使得前后端无法顺利协作。

    2 年前
  • npm 包 xod-js 使用教程

    简介 xod-js 是一个基于 HTML5 和 JavaScript 的开源库,支持对 PDF 文件进行各种编辑操作,包括拆分、合并、提取页面、提取文本、删除页面等等。

    2 年前
  • npm 包 @cross-border-bridge/function-channel 使用教程

    概述 @cross-border-bridge/function-channel 是一款前端跨域数据传递工具的 npm 包,它可以提供前端应用程序之间的安全、可靠的数据传递通道。

    2 年前
  • npm 包 edit-dotenv 使用教程

    什么是 edit-dotenv edit-dotenv 是一款 npm 包,它可以帮助开发者方便地在 Node.js 应用中编辑 .env 文件,从而实现动态调整应用的环境变量。

    2 年前
  • **npm 包 grunt-alibabacloud-oss 使用教程**

    介绍 grunt-alibabacloud-oss 是一个基于 Grunt 的蚂蚁金服云存储 OSS 的插件,提供了上传和删除文件的能力。可以非常方便地将编译好的本地文件发布到阿里云OSS上。

    2 年前
  • npm 包 protoculture-mongoose 使用教程

    引言 当我们使用 Node.js 开发后端应用时,常常会使用 MongoDB 作为数据存储方式,而 Mongoose 又是我们常见的 MongoDB 数据库操作库。

    2 年前
  • npm 包 @lfjs/parser 使用教程

    近年来,前端开发方兴未艾,越来越多的工具和技术涌现出来。其中,npm 是前端开发者必备的工具之一。npm 包 @lfjs/parser 就是其中之一。本文将为大家详细介绍如何使用此 npm 包。

    2 年前
  • npm 包 angular-backend 使用教程

    作为一名前端开发人员,我们经常需要与后端 API 进行交互。而 angular-backend 是一个负责实现与后端 API 交互的 npm 包。本文将介绍如何使用 angular-backend 来...

    2 年前

相关推荐

    暂无文章