文章插图
一、背景目前业界主流的做法是使用分布式链路跟踪系统 , 其理论基础是来自 google 的一篇论文 《大规模分布式系统的跟踪系统》 。
论文如下图所示:
文章插图
(图片来源:网络)
在此理论基础上 , 诞生了很多优秀的实现 , 如 zipkin、jaeger 。同时为了保证 API 兼容 , 他们都遵循 OpenTracing 标准 。那 OpenTracing 标准是什么呢?
OpenTracing 翻译为开发分布式追踪 , 是一个轻量级的标准化层 , 它位于应用程序/类库和链路跟踪系统之间的一层 。这一层可以用下图表示:
文章插图
从上图可以知道 , OpenTracing 具有以下优势:
- 统一了 API , 使开发人员能够方便的添加追踪系统的实现 。
- OpenTracing 已进入 CNCF , 正在为全球的分布式链路跟踪系统 , 提供统一的模型和数据标准 。
本篇文章将通过已有的优秀实现 —— zipkin , 来给大家阐述 Node.js 应用如何对接分布式链路跟踪系统 。
二、zipkin2.1 zipkin 是什么?zipkin 是 Twitter 基于 Google 的分布式追踪系统论文的开发实现 , 其遵循 OpenTracing 标准 。
zipkin 用于跟踪分布式服务之间的应用数据链路 。
2.2 zipkin 架构官方文档上的架构如下图所示:
文章插图
为了更好的理解 , 我这边对架构图进行了简化 , 简化架构图如下所示:
文章插图
从上图可以看到 , 分为三个部分:
第一部分:全链路信息获取 , 我们不使用 zipkin 自带的全链路信息获取 , 我们使用 zone-context 去获取全链路信息
第二部分:传输层 , 使用 zipkin 提供的传输 api , 将全链路信息传递给 zipkin
第三部分: zipkin 核心功能 , 各个模块介绍如下:
- collector 就是信息收集器,作为一个守护进程 , 它会时刻等待客户端传递过来的追踪数据 , 对这些数据进行验证、存储以及创建查询需要的索引 。
- storage 是存储组件 。zipkin 默认直接将数据存在内存中 , 此外支持使用 ElasticSearch 和 MySQL 。
- search 是一个查询进程 , 它提供了简单的 JSON API 来供外部调用查询 。
- web UI 是 zipkin 的服务端展示平台 , 主要调用 search 提供的接口 , 用图表将链路信息清晰地展示给开发人员 。
2.3 zipkin 环境搭建采用 Docker 搭建 , 这里我们使用 docker 中的 docker-compose 来快速搭建 zipkin 环境 。
docker-compose.yml 文件内容如下:
version: '3.8'services:elasticsearch:image: docker.elastic.co/elasticsearch/elasticsearch:7.5.0container_name: elasticsearchrestart: alwaysports:- 9200:9200healthcheck:test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"]interval: 30stimeout: 10sretries: 3start_period: 40senvironment:- discovery.type=single-node- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms512m -Xmx512m"- TZ=Asia/Shanghaiulimits:memlock:soft: -1hard: -1zipkin:image: openzipkin/zipkin:2.21container_name: zipkindepends_on:- elasticsearchlinks:- elasticsearchrestart: alwaysports:- 9411:9411environment:- TZ=Asia/Shanghai- STORAGE_TYPE=elasticsearch- ES_HOSTS=elasticsearch:9200
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 高性能计算:RoCE技术分析及应用
- 2023年企业安全运营团队需面对的7道坎
- 郭富城|方媛春节晒全家福,57岁郭富城头发乌黑,俩女儿一个像爸一个像妈
- 济南|扬中打好稳就业组合拳 全力以复共沐就业“春风”
- 珠海的全日制浸泡式英语好吗 浸泡式英语
- 抖音超市全面开放!能否“后来者居上”?
- 使用苹果全家桶一年,谈谈我的体会!什么是必买的配件?
- 胡歌|胡歌官宣生女成开年第一瓜,唐嫣似早已知情,仙剑三全员已婚生娃
- 黄河多长多少千米?请问黄河全长大约多少千米?
- 陈佩斯|陈佩斯妹妹全家福曝光!老公帅气学霸女儿漂亮,女婿是广东富二代