微服务链路追踪原理,一文搞懂!

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
简介: 本文重点讲解微服务链路追踪(Microservices Distributed Tracing),介绍其原理、架构及工作流程。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。

关注△mikechen的互联网架构△,10年+BAT架构经验倾囊相授


image.png

大家好,我是 mikechen | 陈睿

随着微服务系统拆分后,急需链路追踪有故障的服务,今天就重点讲解微服务链路追踪@mikechen

什么是微服务链路追踪

微服务链路追踪,全称是Microservices Distributed Tracing,是在分布式系统中跟踪和监控微服务间相互调用的过程的一种技术手段。

为什么用微服务链路追踪?

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

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

当请求变慢或者不可用时,我们无法得知是哪个后台服务引起的,这时就需要解决如何快速定位服务故障点。

主要解决以下3点问题:

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

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

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

微服务链路追踪有哪些?

目前市面上的链路追踪组件有:Zipkin分布式跟踪系统,以及Naver的Pinpoint、Apache的HTrace、阿AL里的鹰眼Tracing、京J东的Hydra、新X浪的Watchman,美M团点评的CAT,Skywalking等。

微服务链路追踪的原理

这里我就以Zipkin为例给大家讲解下具体的链路追踪的原理,当然,你如果用别的分布式跟踪系统,链路追踪的原理也是大同小异的。

我以Zipkin为例,谈谈链路追踪的原理。

1.ZipKin架构

ZipKin可以分为两部分:

一部分是ZipKin Server:用来作为数据的采集存储、数据分析与展示;

一部分是ZipKin Client:基于不同的语言及框架封装的一些列客户端工具,这些工具完成了追踪数据的生成与上报功能。

整体架构如下:

image.png

2.Zipkin核心组件

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

image.png

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 为若干个子节点的一棵树,如下图所示:

image.png

4.Zipkin的工作流程

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

image.png

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

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

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

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

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

以上,是微服务链路追踪原理的详细解析,欢迎评论区留言交流或拓展。

我是 mikechen | 陈睿 ,关注【mikechen的互联网架构】,10年+BAT架构技术倾囊相授。

本文已同步我的技术博客 www.mikechen.cc,更新至我原创的《30W+字大厂架构技术合集》中。

相关实践学习
基于OpenTelemetry构建全链路追踪与监控
本实验将带领您快速上手可观测链路OpenTelemetry版,包括部署并接入多语言应用、体验TraceId自动注入至日志以实现调用链与日志的关联查询、以及切换调用链透传协议以满足全链路打通的需求。
分布式链路追踪Skywalking
Skywalking是一个基于分布式跟踪的应用程序性能监控系统,用于从服务和云原生等基础设施中收集、分析、聚合以及可视化数据,提供了一种简便的方式来清晰地观测分布式系统,具有分布式追踪、性能指标分析、应用和服务依赖分析等功能。 分布式追踪系统发展很快,种类繁多,给我们带来很大的方便。但在数据采集过程中,有时需要侵入用户代码,并且不同系统的 API 并不兼容,这就导致了如果希望切换追踪系统,往往会带来较大改动。OpenTracing为了解决不同的分布式追踪系统 API 不兼容的问题,诞生了 OpenTracing 规范。OpenTracing 是一个轻量级的标准化层,它位于应用程序/类库和追踪或日志分析程序之间。Skywalking基于OpenTracing规范开发,具有性能好,支持多语言探针,无侵入性等优势,可以帮助我们准确快速的定位到线上故障和性能瓶颈。 在本套课程中,我们将全面的讲解Skywalking相关的知识。从APM系统、分布式调用链等基础概念的学习加深对Skywalking的理解,从0开始搭建一套完整的Skywalking环境,学会对各类应用进行监控,学习Skywalking常用插件。Skywalking原理章节中,将会对Skywalking使用的agent探针技术进行深度剖析,除此之外还会对OpenTracing规范作整体上的介绍。通过对本套课程的学习,不止能学会如何使用Skywalking,还将对其底层原理和分布式架构有更深的理解。本课程由黑马程序员提供。
目录
打赏
0
2
2
0
69
分享
相关文章
深入解析云计算中的微服务架构:原理、优势与实践
深入解析云计算中的微服务架构:原理、优势与实践
320 3
微服务SpringCloud链路追踪之Micrometer+Zipkin
SpringCloud+Openfeign远程调用,并用Mircrometer+Zipkin进行链路追踪
822 20
微服务系列:服务注册与发现原理详解
本文详细解析了微服务架构中的服务注册与发现原理,大厂面试高频,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
微服务系列:服务注册与发现原理详解
微服务Zipkin链路追踪原理,图解版,一文吃透!
本文重点讲解Zipkin链路追踪的原理与使用,帮助解决微服务架构下的服务响应延迟等问题,提升系统性能与稳定性。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
微服务Zipkin链路追踪原理,图解版,一文吃透!
深入理解云计算中的微服务架构:原理、优势与实践
深入理解云计算中的微服务架构:原理、优势与实践
228 0
深入解析微服务架构:原理、优势与实践
深入解析微服务架构:原理、优势与实践
168 0
分布式系统架构6:链路追踪
本文深入探讨了分布式系统中的链路追踪理论,涵盖追踪与跨度的概念、追踪系统的模块划分及数据收集的三种方式。链路追踪旨在解决复杂分布式系统中请求流转路径不清晰的问题,帮助快速定位故障和性能瓶颈。文中介绍了基于日志、服务探针和边车代理的数据收集方法,并简述了OpenTracing、OpenCensus和OpenTelemetry等链路追踪协议的发展历程及其特点。通过理解这些概念,可以更好地掌握开源链路追踪框架的使用。
306 41
分布式链路监控系统问题之系统拆分后链路追踪技术的问题如何解决
分布式链路监控系统问题之系统拆分后链路追踪技术的问题如何解决
115 0
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
1303 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问