链路追踪——【Brave】第一遍小结

前言

微服务链路追踪系列博客,后续可能会涉及到Brave、Zipkin、Sleuth内容的梳理。

Brave

何为Brave?

github地址:https://github.com/openzipkin/brave

Brave是一个分布式追踪埋点库。

UserAction
Brave
Zipkin
UI

主要功能:
拦截请求,收集时序数据,关联、传播追踪上下文。最后,追踪数据会上报到Zipkin等服务器。

下面介绍Brave的几个核心功能:

1、Propagation

B3Propagation

Brave使用B3传播协议,即在http请求头中存储固定字段,来传递链路信息。如:x-b3-traceId、x-b3-spanId、x-b3-sampled等

在这里插入图片描述
举例:
在整合spring cloud sleuth项目中,针对任一请求,可在请求头中查看到相应的链路追踪字段信息。

x-b3-traceid:3bc54fac863bedb4
x-b3-spanid:e9d611683cf3613c
x-b3-parentspanid:3bc54fac863bedb4
x-b3-sampled:0

注意:
若B3已有固定字段满足不了您的需求,还可以通过BaggageField添加自定义业务字段。

步骤

主要包括两个重要环境:Inject(注入)和Extract(提取)。
其中,Inject即将b3字段信息添加到http header中,而Extract正好相反,及从http header中提取相应b3信息。

在这里插入图片描述

2、Span

Span,实际记录每个功能块执行信息的类。

(1)数据内容

主要包括以下三部分内容:
基础数据:用于跟踪树中节点的关联和界面展示,包括traceId、spanId、parentId、name、timestamp和duration。
name:用于在跟踪树节点的时间条上展示。
timestamp用于记录调用的起始时间
duration表示此次调用的总耗时,在跟踪树中将表示成该Span的时间条的长度。
Annotation数据:用来记录关键事件,只有四种,cs(Client Send)、sr(Server Receive)、ss(Server Send)、cr(Client Receive),所以在Span模型中,Annotation是一个列表,长度最多为4。
每种关键事件包含value、timestamp和endpoint,value就是cs、sr、ss和cr中的一种,timestamp表示发生的时间,endpoint用于记录发生的机器(ip)和服务名称(serviceName)。
BinaryAnnotation数据:如果需要绑定一些业务数据(日志)的话,可以将数据写入BinaryAnnotation中,它的结构和Annotation数据一模一样,在Span中也是一个列表,这里就不再阐述,但BinaryAnnotation中不宜放太多数据,不然将导致性能和体验的下降。

(2)分类

NoopSpan:从不上报Zipkin
RealSpan:可能上报,在finish()后上报
LazySpan:延迟创建Span(当第一个公共方法调用时)

3、Sample

采样器,并非所有的请求数据都会记录并上报Zipkin。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值