npm 包 zipkin-context-cls 使用教程

在现代应用程序中,性能调试和优化是至关重要的。Zipkin 是一个开源工具,可以帮助我们理解和追踪应用程序内不同组件之间的调用。 zipkin-context-cls 是一个用于 Node.js 程序的 npm 包,可以帮助我们在 Zipkin 的跟踪信息中传递上下文。

本文将介绍 npm 包 zipkin-context-cls 的使用方法,涵盖针对 Zipkin 的基础知识、安装和设置包、使用第三方库或传递自定义上下文等方面的详细指南。本文旨在帮助读者深入了解如何在应用程序中使用 Zipkin 进行性能优化。

Zipkin 基础知识

Zipkin 是一个分布式的跟踪系统,它可以帮助我们追踪分布式系统中的请求并分析应用程序的性能。 Zipkin 跟踪请求的路径,并在每个组件中添加特殊注释,记录每个组件的时间戳和其他指标。

Zipkin 把整个应用程序看作是包含许多组件的分布式系统,每个组件都应该被定义成单独的 span (跟踪单元)。当请求从一个组件传递到另一个组件时,我们需要将上下文传递下去,以便在 Zipkin 跟踪的 span 中正确记录时间戳和指标。

安装和设置 npm 包 zipkin-context-cls

zipkin-context-cls 是一个 Node.js 模块,可以使用 npm 安装。它提供了一种通过 Node.js 全局上下文存储传递 Zipkin 上下文的方法。

Step 1: 安装 zipkin-context-cls npm 包

可以采用以下命令来安装 zipkin-context-cls:

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

Step 2: 配置 zipkin-context-cls

zipkin-context-cls 可以通过以下方式进行设置:

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

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

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

在上面的示例中,我们在 tracer 对象中传递了一个 ctxImpl 对象,ctxImpl 是 zipkin-context-cls 提供的一个用于存储 Zipkin 上下文的对象。在后续的 span 中,我们将使用属性来访问上下文。

使用 zipkin-context-cls

接下来,我们将介绍如何使用 zipkin-context-cls 将 Zipkin 上下文传递给不同的组件。

传递 Zipkin 上下文

我们可以在一个组件的 span 中设置属性,以便该属性可以被其他组件的 span 访问。

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

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

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

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

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

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

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

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

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

getRowById 方法中,我们定义了一个新的 span 并在其中设置 traceIdspanIdparentId。我们还使用 span.recordAnnotation 方法声明了两个注解,记录为新建 span 的开始和结束。

传递自定义上下文

我们可以使用 zipkin-context-cls 存储和传递任何类型的上下文数据。在下面的示例中,zipkin-context-cls 作为一个中间件用于 Express。我们可以使用中间件从请求中获取值并在 span 上设置值。

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

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

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

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

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

在上述示例中,我们定义了 Express 中间件,将 my-header 存储在上下文中,然后在 /my/path 端点上创建新的 span,并将其 parentId 设置为 traceId.spanId。在 span 中,我们还在 baggage 中存储了 myOtherValue

结论

本文介绍了 npm 包 zipkin-context-cls 的安装和设置过程,并涉及使用 zipkin-context-cls 将 Zipkin 上下文传递给组件的方法。我们还介绍了如何使用自定义上下文存储和传递上下文数据,以方便跟踪应用的性能。使用 zipkin-context-cls,我们可以轻松跟踪应用程序的性能,并了解分布式系统内组件之间的行为和交互。

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


猜你喜欢

  • npm 包 lex-parser 使用教程

    前言 在前端开发中,解析字符串成 token 是一个非常常见的任务,而使用 lex-parser 这个 npm 包可以极大地简化这个过程。本文将详细介绍 lex-parser 的使用方法,包括安装、配...

    4 年前
  • npm 包 @znemz/js-common-babel-config 使用教程

    前言 在前端开发中,我们常常需要使用 babel 来将最新的 ECMAScript 语法转换成浏览器能够支持的语法,同时还需要添加一些插件或者配置以满足项目的需求。

    4 年前
  • npm 包 @znemz/js-common-babel-config-clone 使用教程

    作为前端开发者,我们经常使用到 Babel 来转译我们编写的 JavaScript 代码,以便让我们的代码兼容到不同的浏览器和环境中。但是,每次搭建项目时都需要手动配置 Babel 也是一件十分繁琐的...

    4 年前
  • npm 包 @gulp-sourcemaps/map-sources 使用教程

    简介 在前端开发中,使用 Gulp 自动化构建工具来处理任务是非常常见的。其中,@gulp-sourcemaps/map-sources 是一个非常有用的 npm 包,它可以用来调试压缩后的 Java...

    4 年前
  • npm 包 @znemz/js-common-editorconfig-clone 使用教程

    npm 包 @znemz/js-common-editorconfig-clone 使用教程 什么是 EditorConfig? EditorConfig 是一种协议,可使多个程序员共同协作在同一项目...

    4 年前
  • 使用 @znemz/js-common-eslint-config-mono-clone NPM 包

    在前端开发中,代码的规范和统一性是非常重要的。而 eslint 就是一个用来检查代码规范的工具。在使用 eslint 时,我们可以使用一些现成的配置,例如 @znemz/js-common-eslin...

    4 年前
  • npm 包 generator-eslint 使用教程

    作为前端开发人员,我们经常会遇到代码风格不一致的问题,尤其是在团队协作的时候。为了解决这个问题,我们可以使用 eslint 这个工具来对代码风格进行检查和规范。但是,在实际使用中,我们可能需要不同的 ...

    4 年前
  • npm 包 @znemz/eslint-plugin-nem 使用教程

    在前端开发中,代码规范化是非常重要的一环。它可以帮助开发人员避免写出不规范的代码,提高代码的可读性和可维护性。 eslint 是一个非常流行的代码规范工具,它可以帮助开发人员定义自己的代码规范,并对代...

    4 年前
  • npm 包 @znemz/js-common-eslint-config 使用教程

    背景 在前端开发中,代码规范是很重要的一环,而 ESLint 是一个长期以来广泛使用的代码规范和风格检查工具。但是用到 ESLint,配置也往往会带来不小的麻烦。为了解决这个问题,@znemz/js-...

    4 年前
  • npm 包 @znemz/js-common-eslint-config-react 使用教程

    随着现代前端技术的快速发展,前端项目变得越来越复杂,代码量庞大,开发体验和代码质量的要求越来越高。为了提高代码质量,我们需要使用一些工具来规范代码风格、检查代码错误等。

    4 年前
  • npm 包 @znemz/js-common-eslint-config-react-mono-clone 使用教程

    简介 随着前端技术的发展,JavaScript 成为了前端开发的重要一环。而 npm 是 JavaScript 生态系统中的重要组成部分之一,其为开发者们提供了方便快捷的包管理工具。

    4 年前
  • npm 包 @znemz/js-common-gulp-monorepo-typescript 使用教程

    前言 在前端开发中,使用自动化工具可以大大提高开发效率。而最常用的自动化工具之一就是 Gulp。而对于一个大型的项目,多人协作开发时,经常会发现需要拆分出多个子项目,通过 Monorepo 的方式进行...

    4 年前
  • npm 包 @znemz/js-common-prettierrc-clone 使用教程

    简介 在前端开发中,为了提高代码可维护性和可读性,我们经常需要使用代码格式化工具。而其中,Prettier 是一个非常受欢迎的工具,可以快速、准确地格式化代码。在使用 Prettier 的过程中,我们...

    4 年前
  • npm 包 @znemz/node-memwatch 使用教程

    简介 @znemz/node-memwatch 是一个基于 Node.js 的内存泄漏检测工具,可帮助开发人员在开发过程中实时监测应用的内存使用情况,定位内存泄漏问题并及时修复。

    4 年前
  • npm包 @znemz/js-common-debug-clone 使用教程

    简介 在前端开发中,经常会遇到需要对一些数据进行调试的情况,并且我们通常会使用 console 打印出这些数据来查看。然而,在实际开发过程中,由于数据结构复杂或者引用关系错综复杂,使用 console...

    4 年前
  • npm 包 @znemz/js-common-tsconfig-clone 使用教程

    在前端开发中,使用 TypeScript 已经成为了一种趋势,通过 type checking、自动补全等功能提升了项目的可维护性。虽然 TypeScript 带来了很多好处,但是在项目中需要管理好 ...

    4 年前
  • npm 包 @znemz/js-common-cpy-cli 使用教程

    概述 npm 是 Nodejs 的包管理器,允许用户共享和重复使用可重用的代码模块。使用 npm 可以轻松地安装、更新和卸载 JavaScript 包。其中,@znemz/js-common-cpy-...

    4 年前
  • npm 包 @znemz/js-common-jest-config-mono-package-clone 使用教程

    简介 @znemz/js-common-jest-config-mono-package-clone 是一款基于 Jest 的测试配置包,用于一站式的测试解决方案。

    4 年前
  • npm包 @znemz/react-extras-jest 使用教程

    在 React 的开发过程中我们经常需要使用到 Jest 测试框架。而 @znemz/react-extras-jest 这个 npm 包就提供了一些有用的 Jest 工具来简化我们在 React 组...

    4 年前
  • npm 包 self-signed 使用教程

    在前端项目开发中,我们常常需要使用 HTTPS 协议来保证数据的传输安全性。虽然我们可以通过自己的 CA 证书来进行签名,但这样比较麻烦,而且有时候并不需要那么高的安全级别。

    4 年前

相关推荐

    暂无文章