首页 > 其他分享 >微服务 Zipkin 链路追踪原理(图文详解)

微服务 Zipkin 链路追踪原理(图文详解)

时间:2022-10-25 17:55:54浏览次数:80  
标签:调用 架构 trace Zipkin 链路 服务 图文

Zipkin链路追踪原理与使用(图文详解)-mikechen的互联网架构

一个看起来很简单的应用,可能需要数十或数百个服务来支撑,一个请求就要多次服务调用。

当请求变慢、或者不能使用时,我们是不知道是哪个后台服务引起的。

这时,我们使用 Zipkin 就能解决这个问题。

由于业务访问量的增大,业务复杂度增加,以及微服务架构和容器技术的兴起,要对系统进行各种拆分。

微服务系统拆分后,我们可以使用 Zipkin 链路,来快速定位追踪有故障的服务点。

今天重点讲解 Zipkin 链路追踪的原理与使用 @mikechen

目录

Zipkin 基本概述

Zipkin 是一款开源的分布式实时数据追踪系统(Distributed Tracking System),能够收集服务间调用的时序数据,提供调用链路的追踪。

Zipkin 其主要功能是聚集来自各个异构系统的实时监控数据,在微服务架构下,十分方便地用于服务响应延迟等问题的定位。

Zipkin 每一个调用链路通过一个 trace id 来串联起来,只要你有一个 trace id ,就能够直接定位到这次调用链路,并且可以根据服务名、标签、响应时间等进行查询,过滤那些耗时比较长的链路节点。

Zipkin链路追踪原理与使用(图文详解)-mikechen的互联网架构

 

为什么用 Zipkin ?

大型互联网公司为什么需要分布式跟踪系统?

随着业务访问量越来越大。例如:比较典型的是淘宝,淘宝从早期的单体开始往分布式微服务演变,系统也随之进行各种拆分,看似简单的一个应用,后台可能有几十个甚至几百个服务在支撑。

一个客户端的请求,例如:一次下订单请求,可能需要多次的服务调用(商品、用户、店铺等系统调用过程),最后才能完成。

当请求变慢、或者不能正常使用时,我们不知道是哪个后台服务引起的,这时,我们就要想办法快速定位服务故障点。

Zipkin 分布式跟踪系统就能非常好地解决该问题,主要解决以下3点问题:

1.  动态展示服务的链路;

2.  分析服务链路的瓶颈并对其进行调优;

3.  快速进行服务链路的故障发现。

这就是 Zipkin 服务跟踪系统存在的目的和意义。

当然了,除了 Zipkin 分布式跟踪系统以外,我们还可以使用其他比较成熟的实现,例如:

  • Naver 的 Pinpoint
  • Apache 的 HTrace
  • 阿里的鹰眼 Tracing
  • 京东的 Hydra
  • 新浪的 Watchman
  • 美团点评的 CAT
  • skywalking
  • ......

知道了 Zipkin 的使用原因、使用场景和作用,接下来,我们来了解 Zipkin 的原理。

 

Zipkin 的原理

1. ZipKin 架构

ZipKin 可以分为两部分:

  • ZipKin Server :用来作为数据的采集存储、数据分析与展示;
  • ZipKin Client :基于不同的语言及框架封装的一些列客户端工具,这些工具完成了追踪数据的生成与上报功能。

整体架构如下:

Zipkin链路追踪原理与使用(图文详解)-mikechen的互联网架构

2. Zipkin 核心组件

Zipkin (服务端)包含四个组件,分别是 collector、storage、search、web UI。

Zipkin链路追踪原理与使用(图文详解)-mikechen的互联网架构

1)  collector  信息收集器

collector 接受或者收集各个应用传输的数据。

2)  storage  存储组件

zipkin 默认直接将数据存在内存中,此外支持使用 Cassandra、ElasticSearch 和 Mysql 。

3)  search  查询进程

它提供了简单的 JSON API 来供外部调用查询。

4)  web UI  服务端展示平台

主要是提供简单的 web 界面,用图表将链路信息清晰地展示给开发人员。

3. Zipkin 核心结构

当用户发起一次调用时,Zipkin 的客户端会在入口处为整条调用链路生成一个全局唯一的 trace id,并为这条链路中的每一次分布式调用生成一个 span id。

一个 trace 由一组 span 组成,可以看成是由 trace 为根节点,span 为若干个子节点的一棵树,如下图所示:

Zipkin链路追踪原理与使用(图文详解)-mikechen的互联网架构

4. Zipkin 的工作流程

一个应用的代码发起 HTTP get 请求,经过 Trace 框架拦截,大致流程如下图所示:

Zipkin链路追踪原理与使用(图文详解)-mikechen的互联网架构

1)把当前调用链的 Trace 信息,添加到 HTTP Header 里面;

2)记录当前调用的时间戳;

3)发送 HTTP 请求,把 trace 相关的 header 信息携带上;

4)调用结束之后,记录当前调用话费的时间;

5)把上面流程产生的信息,汇集成一个 span,再把这个 span 信息上传到 zipkin 的 Collector 模块。

 

Zipkin 的部署与运行

Zipkin 的 github 地址:https://github.com/apache/incubator-zipkin

Zipkin 支持的存储类型有 inMemory、MySql、Cassandra、以及 ElasticsSearch 几种方式,正式环境推荐使用 Cassandra 和 ElasticSearch。
Zipkin链路追踪原理与使用(图文详解)-mikechen的互联网架构

 

总结

通过本文,我们知道了 Zipkin 的作用、使用场景、架构、核心组件,以及 Zipkin 的工作流程等,希望对大家掌握微服务有所帮助。

 

作者简介

陈睿 | mikechen , 10年+大厂架构经验,「mikechen 的互联网架构」系列文章作者,专注于互联网架构技术。

标签:调用,架构,trace,Zipkin,链路,服务,图文
From: https://www.cnblogs.com/mikechenshare/p/16825729.html

相关文章

  • 一文读懂云渲染“串流”全链路时延及优化策略
    ​这是一个让云游戏完美起步的时代。云游戏作为产业内近年来炙手可热的话题,具有“云端运行、超高清、零延时、即点即玩”等众多特性。随着5G时代的到来,以及中心云能......
  • 图文结合带你搞懂InnoDB MVCC
    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。前情提要当前读快照读什么是MVCC......
  • 一文读懂云渲染“串流”全链路时延及优化策略
    ​这是一个让云游戏完美起步的时代。云游戏作为产业内近年来炙手可热的话题,具有“云端运行、超高清、零延时、即点即玩”等众多特性。随着5G时代的到来,以及中心云......
  • Zipkin 服务端部署
    Zipkin服务端部署Zipkin服务端部署非常简单,可以通过官网快速上手。​​https://zipkin.io/pages/quickstart.html​​1.下载Zipkin最新Jar包user@user-PC:/data$cur......
  • Epson RC+ 7.0 下载安装使用图文教程
    简介爱普生机器人仿真系统,是通过计算机对实际的机器人系统进行模拟的技术。机器人仿真系统可以通过单机或者多台机器人从而组成工作站或是生产线。这些工业机器人的仿真软......
  • Mac下安装MySQL详细图文步骤
    1.安装包下载下载链接:https://downloads.mysql.com/archives/community/为了安装更方便,建议下载和mac电脑版本匹配的mysql的dmg安装包,我的电脑Mac版本是12.5的,所以下载......
  • 全链路监控建设的四个重点
    业务规模不断扩大,支撑业务运行的应用系统所采用的组件也越来越多地运用分布式、微服务架构来响应业务需求,这些组件越来越多的运用也形成了越来越复杂的分布式调用网络。所以......
  • 应用性能管理与链路追踪的关系
    应用性能管理APM(ApplicationPerformanceMonitoring)经常和分布式追踪同时出现,但两者却有着明显的差异。APM由来已久,已经有十几年的历史,自最早的以WebLogic为代表的J2EE应用......
  • 在华为设备上配置链路聚合和OSPF、RIP
    华为设备上配置链路聚合和OSPF、RIP......
  • ubuntu18.04安装pangolin库,图文详解
    1.终端输入命令,安装所需依赖sudoaptinstalllibglew-devcmakelibboost-devlibboost-thread-devlibboost-filesystem-devlibeigen3-dev-y2、下载源码压缩包git......