链路追踪 SkyWalking 源码分析 —— Collector 接收 Trace 数据

本文主要分析 SkyWalking Collector 如何接收和处理 Trace 数据,包括 TraceSegmentServiceHandler、SegmentParse 和标准化流程。在接收到 Trace 数据后,Collector 进行构建,构建成功则进行流式处理存储,失败则暂存于 Buffer 文件。预构建过程中,若遇到未注册的操作编号,构建会失败。涉及的主要类包括 SegmentParse、Standardization 标准化和 Buffer 文件管理。
摘要由CSDN通过智能技术生成

点击上方“芋道源码”,选择“设为星标

做积极的人,而不是积极废人!

源码精品专栏

 

摘要: 原创出处 http://www.iocoder.cn/SkyWalking/collector-receive-trace/ 「芋道源码」欢迎转载,保留摘要,谢谢!

本文主要基于 SkyWalking 3.2.6 正式版

  • 1. 概述

  • 2. TraceSegmentServiceHandler

    • 2.1 TraceSegmentService

    • 2.2 SegmentParse

    • 2.3 Standardization 标准化

  • 3. Buffer 文件

    • 3.1 初始化

    • 3.2 写入

    • 3.3 读取

  • 666. 彩蛋


1. 概述

分布式链路追踪系统,链路的追踪大体流程如下:

  1. Agent 收集 Trace 数据。

  2. Agent 发送 Trace 数据给 Collector 。

  3. Collector 接收 Trace 数据

  4. Collector 存储 Trace 数据到存储器,例如,数据库。

本文主要分享【第三部分】 SkyWalking Collector 接收 Trace 数据

友情提示:Collector 接收到 TraceSegment 的数据,对应的类是 Protobuf 生成的。考虑到更加易读易懂,本文使用 TraceSegment 相关的原始类

大体流程如下:

  • Collector 接收到 TraceSegment 数据后,进行构建

  • 【蓝色流程】构建成功,进行流式处理,最终存储到存储器( 例如,ES / H2 )。

  • 【粉色流程】构建失败,写入 Buffer 文件进行暂存。

  • 【绿色流程】后台线程,定时读取 Buffer 文件,重新提交构建。

什么是构建

从 TraceSegment 数据中,会构建出更多的数据维度,如下图所示:

构建的过程,本文只分享调用的过程,具体怎么生成新的数据,数据的流式处理与存储,在 《SkyWalking 源码解析 —— Collector 存储 Trace 数据》 详细解析。

为什么构建会失败

在 TraceSegment 里的数据结构,例如操作名( operationName )和操作编号( operationId ) ,在 《SkyWalking 源码分析 —— Agent 收集 Trace 数据》 中我们可以看到,考虑到网络传输,优先使用 operationId ,若不存在( 例如操作还未注册,或者注册了 Agent 未同步到本地 ),则使用 operationName

但是,Collector 构建过程时,要求的是 operationId ,如果传递的是 operationName 时,需要将 operationName 转换成 operationId 。若此时 operationName 未注册时,则无法获取到 operationId ,导致构建失败

那么有胖友可能有疑惑,在构建过程中,注册 operationName 呢?答案是不行, 在 《SkyWalking 源码分析 —— Agent DictionaryManager 字典管理》「2.2 操作的同步 API」 中,我们可以看到,operationName 的注册,是异步的过程。因而,即使构建的过程中,调用注册,也无法获得

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值