SpringCloud-Sleuth+Zipkin

概述

将一次请求分布式调用,使用GPS定位串起来,记录每个调用的耗时、性能等日志,并通过可视化工具展示。
AlibabaCloud全家桶没有对应的链路追踪系统,使用Sleuth和Zipking(内部使用的鹰眼)
Sleuth生成的一个ID,叫Trace ID,用来标识一条请求链路路,一条请求链路路中包含一个Trace ID,多个Span ID

zipkin

大规模分布式系统的APM工具,和Sleuth结合可以提供可视化的Web界面分析调用链路耗时情况。

同类产品

  1. 鹰眼(EagleEye)
  2. CAT
  3. twitter开源zipkin,结合sleuth
  4. Pinpoint,运用JavaAgent字节码增强技术
  5. StackDriver Trace (Google)

组成

  1. Collector
  2. Storage
  3. Restful Api
  4. Web UI
    在这里插入图片描述

Zipkin+Sleuth

  1. Sleuth收集跟踪信息通过http请求发送到Zipkin server
  2. zipkin server存储跟踪信息、提供api
  3. UI调用api进行展示,默认存储到内存,可以修改成mysql或es
zipkin:
	base-url: http://127.0.0.1:9411/ #zipkin地址
	discovery-client-enabled: false #不不⽤用开启服务发现
sleuth:
	sampler:
		probability: 1.0 #采样百分⽐比

默认为0.1,即10%,这里配置1,是记录全部sleuth信息,是为了收集到更多的数据(仅供测试用)。
在分布式系统中,过于频繁的采样会影响系统性能所以这里配置需要采用一个合适的值。

原理

RestTemplate每次发起请求时,拦截器会在http请求header中放入如下信息:

x-b3-traceid = 11111111111    #表示当前调用链的trace id
x-b3-spanid = 1111222222     #表示span id
x-b3-parentspanid = 11111333333    #调用链中前一个服务的span id
x-b3-sampled = 1                   #表示是否取样,1表示要将调用信息发送到zipkin

当服务访问完毕后,sleuth会将之前添加到MDC的数据再清理掉

  1. 首先sleuth创建TraceFilter,对所有的网络请求进行拦截,如果请求的header中没有span信息,则创建Span对象,生成span id、trace id等,如果header中有,则直接使用header中的数据创建Span对象
  2. 之后将span id、trace id设置到sl4j的MDC中。当使用RestTemplate发送请求RestTemplateInterceptorInjector拦截器对请求拦截,将新生成的span id、trace id等信息设置到请求的header中。这样服务端收到请求后就可以从header中解析出Span信息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值