SkyWalking链路追踪中span全解

这篇具有很好参考价值的文章主要介绍了SkyWalking链路追踪中span全解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基本概念

        在SkyWalking链路追踪中,Span(跨度)是Trace(追踪)的组成部分之一。Span代表一次调用或操作的单个组件,可以是一个方法调用、一个HTTP请求或者其他类型的操作。

        每个Span都包含了一些关键的信息,如开始时间、结束时间、耗时、所属的Trace ID、Span ID等。开始时间和结束时间记录了Span的执行时间,而Trace ID和Span ID用于标识Span所属的Trace和上下文关系。

        通过记录和分析每个Span的信息,可以了解每个组件的性能指标和调用关系。例如,可以查看每个Span的耗时,从而定位潜在的性能瓶颈;还可以通过分析Span之间的关系,了解请求在分布式系统中的流转过程。

        Span的概念在SkyWalking链路追踪中非常重要,它是分析和优化分布式系统性能的基础。通过对Span数据的收集和分析,开发人员可以深入了解系统中每个组件的性能和调用关系,进而改进系统的可靠性和性能。

SkyWalking链路追踪中span全解,SkyWalking链路追踪,skywalking

span的ID

        Span ID(Span Identifier)是用来唯一标识一个Span的ID。在分布式系统中,请求链路可能会涉及多个组件和服务,每个组件对应一个Span。为了跟踪和关联不同的Span,每个Span都会分配一个唯一的Span ID。

        通过将Span ID与父Span的ID关联起来,我们可以在整个请求链路中追踪和关联不同组件的Span。Span ID可以通过生成唯一的标识符,如UUID(Universally Unique Identifier),保证其在链路中的唯一性。

        通过使用Span ID,我们可以轻松地将不同组件的Span联系在一起,并对整个请求链路进行紧密的追踪和分析。这对于分布式系统调试、性能优化和故障排查非常有帮助。

SkyWalking链路追踪中span全解,SkyWalking链路追踪,skywalking

         一个请求链路中的不同Span看作是一个链表结构。每个Span都有一个唯一的Span ID作为标识符,并且可以有一个或多个父Span ID和一个或多个子Span ID。

          通过父子Span ID的关联,我们可以在链路中建立起Span之间的关系,形成一个有序的链表结构。父Span和子Span之间的关系可以帮助我们理解请求的调用顺序和调用关系。

        通过这种链表结构,我们可以高效地追踪和分析请求的调用链路。我们可以从Entry Span开始,根据Span ID和父子Span ID的关联,逐个遍历Span,了解请求的调用顺序和每个组件的性能情况。

        这种链表结构在分布式系统的调试、故障排查和性能优化中非常有用,帮助我们理解请求的路径、调用关系和性能变化。

SkyWalking链路追踪中span全解,SkyWalking链路追踪,skywalking

        一个Span只能有一个父Span ID,但可以有多个子Span ID。换句话说,一个Span可以被多个子Span所关联,但只能有一个父Span

SkyWalking链路追踪中span全解,SkyWalking链路追踪,skywalking

 

架构体系

span类型:

在SkyWalking链路追踪中,Span(跨度)可以包含多种类型,用于表示不同种类的调用和操作。下面是一些常见的Span类型:

  1. Entry Span(入口跨度):表示请求进入系统的第一个组件,通常是客户端发起的请求。Entry Span记录了请求的开始时间、请求的路径和入口点等信息。

  2. Exit Span(出口跨度):表示请求离开系统的最后一个组件,通常是系统对外提供的服务。Exit Span记录了请求的结束时间、请求的路径和出口点等信息。

  3. Local Span(本地跨度):表示请求在系统内部的一个组件间的调用。Local Span记录了请求在组件内的操作和耗时等信息。

  4. Remote Span(远程跨度):表示请求调用了位于不同主机或网络节点上的远程组件。Remote Span记录了请求调用远程组件的耗时和网络通信等信息。

  5. Error Span(错误跨度):表示系统中发生了错误或异常的Span。Error Span记录了错误发生的详细信息,如错误类型、错误码和错误堆栈等。

这些Span类型涵盖了分布式系统中常见的调用和操作场景,通过区分不同类型的Span,可以更好地分析和优化系统的性能和稳定性。

解读:

        在链路追踪中,Span(跨度)是最小的单元,它代表了一次调用或操作的单个组件。每个Span记录了该组件的关键信息,如开始时间、结束时间、耗时等。通过组合多个Span,就可以构成一个完整的Trace(追踪),描述了请求在分布式系统中的流转过程。

由于Span是最小的单元,它可以记录组件间的调用关系、性能指标和错误状态等重要信息。通过分析和观察这些Span,可以了解请求的路径、耗时和错误等关键指标,从而进行性能优化、故障排查和系统调优。所以在链路追踪中,Span是对系统进行监测和分析的基本单元。

        通过最小单元来对每一次具体的分布式服务之中的调用进行描述

图示:

        SkyWalking链路追踪中span全解,SkyWalking链路追踪,skywalking

 

图解: 

假设我们有一个在线购物系统,由以下几个组件组成:网关服务(Gateway Service)、用户服务(User Service)、订单服务(Order Service)和支付服务(Payment Service)。现在我将模拟一个用户下单并完成支付的链路,并说明各个Span的类型和作用。

  1. 用户发起下单请求,请求进入系统中的网关服务(Entry Span)。Entry Span记录了请求的开始时间、路径和入口点等信息。

  2. 网关服务调用用户服务来验证用户信息并获取用户购物车内容(Local Span)。这个调用生成了一个Local Span,记录了网关服务调用用户服务的操作和耗时等信息。

  3. 用户服务内部发现用户购物车中有商品,需要调用订单服务生成订单(Remote Span)。这个调用生成了一个Remote Span,记录了用户服务调用订单服务的耗时和网络通信情况。

  4. 订单服务接收到请求并生成订单后,需要调用支付服务完成支付(Local Span)。这个调用生成了一个Local Span,记录了订单服务调用支付服务的操作和耗时等信息。

  5. 支付服务完成支付操作后,返回支付结果给订单服务(Exit Span)。这个过程生成了一个Exit Span,表示请求离开系统的最后一个组件。

  6. 如果在任意一个组件中发生了错误,比如用户服务调用订单服务时发生了超时错误,会生成一个Error Span。Error Span记录了错误的详细信息,如错误类型、错误码和错误堆栈等。

        通过以上模拟的链路,我们可以看到各个Span在请求过程中的作用。Entry Span标识了请求的起点,Local Span记录了组件内部的操作,Remote Span记录了远程调用的情况,Exit Span表示请求的终点,而Error Span帮助我们定位和解决错误。这些Span记录了关键的信息,帮助我们了解请求的路径、耗时和错误等情况,从而进行性能优化、故障排查和系统调优。

产生local span与产生remote span

        如果在一个服务器上的服务调用另一个在同一台服务器上的服务,则可以将其称为Local Span。这是因为这个调用是在同一个服务器内部完成的。

而如果一个服务器上的服务需要调用位于不同主机或网络节点上的服务(即跨服务器),则可以将其称为Remote Span。这种情况下,跨服务器的调用会涉及网络通信和跨越不同物理设备或虚拟机的操作。

需要注意的是,Local Span和Remote Span并不仅仅取决于服务部署在不同的服务器上,还取决于调用方式和组件的网络结构。有时候,即使服务部署在不同的服务器上,但是它们通过本地网络进行调用,仍然可以被视为Local Span。因此,在确定Span类型时,除了服务器的物理位置外,还需要考虑组件之间的调用方式和网络结构。

离开系统的最后一个服务产生exit span

        Exit Span表示请求离开系统的最后一个组件,但并不一定是直接返回给用户。在我们的示例中,支付服务完成支付操作后,返回支付结果给订单服务,它是Exit Span的组件。这个Exit Span表示请求离开系统的最后一个组件,但请求可能还需要经过其他组件,如订单服务可能会继续将结果返回给网关服务,最终才返回给用户。

        Exit Span是描述请求链路中离开系统的最后一个组件,它并不指明返回值是直接给用户。请求可能还需要经过多个组件、服务或层级,直到最终返回给用户。Exit Span帮助我们追踪请求的终点,但不一定表示直接返回给用户。

        在这个链路中,Exit Span表示支付服务完成支付操作后,将支付结果返回给订单服务。这个Exit Span是请求离开系统的最后一个组件,我们可以追踪请求的终点。但这个请求的返回值可能还需要经过其他组件,如订单服务可能会继续将结果返回给网关服务,最终才返回给用户。所以在整个链路中,Exit Span标识了请求离开系统的最后一个组件。

        Exit Span主要是用来标识请求离开了系统的最后一个组件。它帮助我们追踪请求的终点,但不一定表示请求的返回值直接给了用户。在整个请求链路中,一个Exit Span标识了离开了当前组件,但请求可能还需要经过其他组件、服务或层级,直到最终返回给用户。Exit Span的作用是帮助我们了解请求的终点,而不仅仅表示返回值直接给了用户。文章来源地址https://www.toymoban.com/news/detail-605126.html

到了这里,关于SkyWalking链路追踪中span全解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 链路追踪Skywalking快速入门

    2023年09月08日
    浏览(34)
  • 全网最全的Skywalking链路追踪

    写在前面 :笔者发现目前关于Skywalking的内容很是零散,没有成型的内容,笔者在项目中使用到Skywalking进行埋点分析,下面分三篇来介绍下Skywalking,分别是Skywalking基本知识,Skywalking基于docke安装,SpringBoot工程集成Skywalking 服务监控需要满足的三要素分别如下: 日志监控 指标

    2023年04月08日
    浏览(29)
  • Skywalking全链路追踪【学习笔记】

    Skywalking全链路追踪的服务搭建,使用docker进行安装。 搭建【ES】 搭建【SkyWalking】 访问这里:http://localhost:9898/ 就有界面了 启动配置添加【Agent】 日志配置添加【日志】 完成 (~ ̄▽ ̄)~ 本地测试接口请求 然后登入http://localhost:9898/ 进行查看数据 参考 SkyWalking 教程:https

    2024年02月12日
    浏览(27)
  • 分布式链路追踪之SkyWalking

      在微服务架构中,一次请求往往涉及到多个模块,多个中间件,多台机器的相互协作才能完成。这一系列调用请求中,有些是串行的,有些是并行的,那么如何确定这个请求背后调用了哪些应用,哪些模块,哪些节点及调用的先后顺序?如何定位每个模块的性能问题?本

    2023年04月20日
    浏览(38)
  • 微服务链路追踪SkyWalking学习笔记

    目录 1、skywalking是什么 1.2 链路追踪框架对比 1.3 性能对比 1.4 Skywalking主要功能特性 2、 SkyWalking 环境搭建部署 2.1 下载 SkyWalking   2.2 搭建SkyWalking OAP 服务 2.3 SkyWalking中三个概念 3、 SkyWalking 接入微服务 3.1 linux环境—通过jar包方式接入 3.2 windos环境—在IDEA中使用Sk

    2024年02月14日
    浏览(25)
  • SkyWalking分布式链路追踪学习

    实际生产中,面对几十个、甚至成百上千个的微服务实例,如果一旦某个实例发生宕机,如果不能快速定位、提交预警,对实际生产造成的损失无疑是巨大的。所以,要对微服务进行监控、预警,对微服务的调用链路进行监控,迅速定位问题 SkyWalking下载 SkyWalking官网 elastic

    2024年02月07日
    浏览(33)
  • SkyWalking链路追踪-技术文档首页

    SkyWalking链路追踪-融合-spring-boot-cloud-单机环境 之《10 分钟快速搭建spring-boot-cloud整合SkyWalking链路追踪》_一单成的博客-CSDN博客 SkyWalking链路追踪-搭建-spring-boot-cloud-单机环境 之《10 分钟快速搭建 SkyWalking 服务》_一单成的博客-CSDN博客  SkyWalking链路追踪-Collector(收集器)_一单

    2024年02月15日
    浏览(55)
  • 分布式链路追踪专栏,分布式链路追踪:Skywalking集群管理设计

    SkyWalking 是一个开源 APM 系统,包括针对 Cloud Native 体系结构中的分布式系统的监视,跟踪,诊断功能。核心功能如下: 服务、服务实例、端点指标分析; 根本原因分析,在运行时分析代码; 服务拓扑图分析; 服务,服务实例和端点依赖性分析; 检测到慢速服务和端点; 性

    2024年02月01日
    浏览(64)
  • SkyWalking链路追踪-Collector(收集器)

    SkyWalking的Collector(收集器)是SkyWalking链路追踪的核心组件之一。它负责接收来自各个Agent的追踪数据,并将其存储到数据存储器(如数据库)中。具体来说,Collector提供了一个统一的接口,用于接收和处理从Agent发送过来的数据。 数据接收:Collector提供接口和服务来接收来自

    2024年02月15日
    浏览(29)
  • 第02讲:链路追踪利器,快速上手 SkyWalking

    SkyWalking 环境搭建 在本课时中,我们将安装并体验 SkyWalking 的基本使用,下面是使用到的相关软件包: apache-skywalking-apm-6.2.0.tar.gz 下载地址:https://archive.apache.org/dist/skywalking/6.2.0/ elasticsearch-6.6.1.tar.gz 下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.1.tar.gz ki

    2023年04月10日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包