在分布式服务架构下,一个 Web 请求从网关流入,有可能会调用多个服务对请求进行处理,拿到最终结果。这个过程中每个服务之间的通信又是单独的网络请求,无论请求经过的哪个服务出了故障或者处理过慢都会对前端造成影响。

处理一个Web请求要调用的多个服务

为了能更方便的查询哪个环节的服务出现了问题,现在常用的解决方案是为整个系统引入分布式链路跟踪。

在分布式链路跟踪中有两个重要的概念:跟踪(trace)和 跨度( span)。trace 是请求在分布式系统中的整个链路视图,span 则代表整个链路中不同服务内部的视图,span 组合在一起就是整个 trace 的视图。

在整个请求的调用链中,请求会一直携带 traceid 往下游服务传递,每个服务内部也会生成自己的 spanid 用于生成自己的内部调用视图,并和traceid一起传递给下游服务。

traceid 在请求的整个调用链中始终保持不变,所以在日志中可以通过 traceid 查询到整个请求期间系统记录下来的所有日志。请求到达每个服务后,服务都会为请求生成spanid,而随请求一起从上游传过来的上游服务的 spanid 会被记录成parent-spanid或者叫 pspanid。当前服务生成的 spanid 随着请求一起再传到下游服务时,这个spanid 又会被下游服务当做 pspanid 记录。

分布式链路跟踪中的trace和span

通过在访问日志和业务日志里记录的traceid、spanid 和 pspanid 能完整的还原出整个请求的调用链路视图,对错误排查能起到很大的帮助。

上面就是分布式链路跟踪的原理,我们可以自己实现,也可以依赖 opentracing 这种开源的解决方案。一般是在请求到达网关的开始,生成本次请求的traceid 和 在网关服务内的spanid ,将他们放在HTTP 请求头或者RPC调用的元数据里,在调用下游服务时继续向下传递。下游的RESTful API服务的全局路由中间件和RPC服务的拦截器里会接收请求携带的traceid 和生成当次请求在服务内部的spanid,从上游接收到的 spanid 在这里会被转换成 pspanid。除此之外我们甚至可以把 traceid 和 spanid 注入到一些数据库连接池应用里,让记录的慢SQL日志里同样能打上 traceid 和 spanid 信息,为请求的响应过慢提供有效的分析数据。

分布式链路跟踪中的traceid和spanid代表什么?相关推荐

  1. 分布式链路跟踪中的 traceid 和 spanid 代表什么?

    在分布式服务架构下,一个 Web 请求从网关流入,有可能会调用多个服务对请求进行处理,拿到最终结果.这个过程中每个服务之间的通信又是单独的网络请求,无论请求经过的哪个服务出了故障或者处理过慢都会对前端 ...

  2. 原理 | 分布式链路跟踪组件 SOFATracer 和 Zipkin 模型转换

    SOFA 中间件是蚂蚁金服自主研发的金融级分布式中间件,包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链 ...

  3. 蚂蚁金服分布式链路跟踪组件 SOFATracer 总览 | 剖析 1

    2019新春支付宝红包技术大揭秘在线峰会将于03-07日开始,点击这里报名届时即可参与大牛互动. SOFA Scalable Open Financial Architecture 是蚂蚁金服自主研发 ...

  4. 跟我学SpringCloud | 第十一篇:使用Spring Cloud Sleuth和Zipkin进行分布式链路跟踪

    SpringCloud系列教程 | 第十一篇:使用Spring Cloud Sleuth和Zipkin进行分布式链路跟踪 Springboot: 2.1.6.RELEASE SpringCloud: ...

  5. 11|链路追踪:如何定制一个分布式链路跟踪系统?

    11|链路追踪:如何定制一个分布式链路跟踪系统 ? 你好,我是徐长龙,这节课我们讲一讲如何实现分布式链路跟踪. 分布式链路跟踪服务属于写多读少的服务,是我们线上排查问题的重要支撑.我经历过的一个系统, ...

  6. 使用zipKin构建NetCore分布式链路跟踪

    本文主要讲解使用ZipKin构建NetCore分布式链路跟踪 场景 因为最近公司业务量增加,而项目也需要增大部署数量,K8S中Pod基本都扩容了一倍,新增了若干物理机,部分物理机网络通信存在问题,导致 ...

  7. 蚂蚁金服分布式链路跟踪组件 SOFATracer 数据上报机制和源码分析 | 剖析

    2019新春支付宝红包技术大揭秘在线峰会将于03-07日开始,点击这里报名届时即可参与大牛互动. SOFA Scalable Open Financial Architecture 是蚂蚁金服自主研发 ...

  8. SpringCloud技术指南系列(十五)分布式链路跟踪Sleuth与Zipkin实现

    SpringCloud技术指南系列(十五)分布式链路跟踪Sleuth与Zipkin实现 一.概述 分布式链路追踪,是一种用于分析和监控应用程序的方法,尤其是那些使用微服务架构的那些应用.分布式链路跟踪 ...

  9. 各大厂分布式链路跟踪系统架构对比

    随着互联网架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务.消息收发.分布式数据库.分布式缓存.分布式对象存储.跨域调用,这些组件共同构成了繁杂的分布式网络,那现在的问题是 ...

最新文章

  1. OpenCV~PS效果
  2. 【 C 】经典抽象数据类型(ADT)之内存分配
  3. 工业机器人行业研究报告
  4. Wi-Fi速度慢的十个原因以及解决办法
  5. Cannot resolve symbol ‘NotBlank‘ Cannot resolve symbol ‘Email‘ Cannot resolve symbol ‘NotEmpty‘
  6. ITK:图像区域重叠
  7. 3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的区别,sql文件导入
  8. underscore.js _.map[Collections]
  9. java Base64转码传图到C#
  10. 修改mysql 外删除用户_mysql添加用户、删除用户、授权、修改密码等
  11. bbpress 论坛 wordpress汉化插件
  12. python执行shell命令
  13. ZOJ3545——AC自动机+状态dp
  14. 【Effective c++】条款6:若不想使用编译器自动生成的函数就应该明确拒绝
  15. php用按钮导出到excel,PHP导出Excel,PHP输入Excel
  16. Java服务器处理图片上传
  17. Ubuntu Server 20.04 设置静态 IP
  18. 以下关于python缩进的描述_以下关于Python缩进的描述中,错误的是
  19. 世界更清晰,搜狐新闻客户端集成HUAWEI HiAI 亮相荣耀Play发布会!
  20. 棋子的移动问题(递归问题)

热门文章

  1. 活动推荐|互联网3.0与区块链新时代论坛(北京)
  2. 新网域名查询和注册API接口类 源码
  3. 妙趣横生的算法--二叉树
  4. cocos2dx中关于Action动作的相关API的具体介绍
  5. 《跟菜鸟学Cisco UC部署实战》-上线了(线下培训班开班,见百度云)
  6. FMDB(FMDatabase)--SQLite的封装
  7. np.newaxis学习【转载】
  8. Linux概述及centos版本介绍和下载地址
  9. Spring MVC 基础笔记
  10. 李洪强iOS开发Swift篇—02_变量和常量