链路追踪 实战 & 理论

整体概念

跟踪每次请求中经过哪些微服务,请求耗时,网络延迟,业务逻辑耗时等。

便于我们更好地分析系统瓶颈、解决系统问题。

  • 耗时分析:通过 Sleuth 可以很方便的了解到每个采样请求的耗时,从而分析出哪些服务调用比较耗时;
  • 可视化错误:对于程序未捕捉的异常,可以通过集成 Zipkin 服务界面上看到;
  • 链路优化:对于调用比较频繁的服务,可以针对这些服务实施一些优化措施。

Sleuth

Sleuth 简介

Sleuth是Spring cloud的分布式跟踪解决方案。
1.span(跨度):基本工作单元。每次服务间的调用都会创建一个span。初始化span叫:root span,它的span id和trace id相等。
2.trace(跟踪):一组共享“root span”的span组成的树状结构 称为 trace,trace也有一个64位ID,trace中所有span共享一个trace id。类似于一颗 span 树。
3.annotation(标签):annotation用来记录事件的存在,其中,核心annotation用来定义请求的开始和结束。

  • CS(Client Send客户端发起请求)。客户端发起请求描述了span开始。
  • SR(Server Received服务端接到请求)。服务端获得请求并准备处理它。SR-CS=网络延迟。
  • SS(Server Send服务器端处理完成,并将结果发送给客户端)。表示服务器完成请求处理,响应客户端时。SS-SR=服务器处理请求的时间。
  • CR(Client Received 客户端接受服务端信息)。span结束的标识。客户端接收到服务器的响应。CR-CS=客户端发出请求到服务器响应的总时间。

Sleuth 单独使用

  1. 每个需要监控的系统 加入 pom 依赖
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-sleuth</artifactId>
		</dependency>
  1. 发起服务间的调用(shop-service 调用 order-service),查看日志打印

shop-service 日志

2022-04-11 11:27:44.722  INFO [shop-service,c69252e77f91b472,c69252e77f91b472,true] 23156 --- [nio-8080-exec-8] com.example.eurekashop.FeignController   : shop-service,res:[host:eureka-order1.com,port:8081]

order-service 日志

2022-04-11 11:27:44.204  INFO [order-service,c69252e77f91b472,39332c0c56646044,true] 8936 --- [nio-8081-exec-6] c.e.eurekaorder.BalancerController       : order-service,res:[host:eureka-order1.com,port:8081]

上面 [shop-service,c69252e77f91b472,c69252e77f91b472,true] 对应
[服务名称,traceId(一条请求调用链中 唯一ID),spanID(基本的工作单元,获取数据等),是否让zipkin收集和展示此信息]

Zipkin

Zipkin 简介

zipkin是twitter开源的分布式跟踪系统。

Zipkin 使用

  1. 每个需要监听的服务添加 pom 依赖
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-zipkin</artifactId>
		</dependency>
  1. 每个需要监听的服务添加配置信息
spring.zipkin.base-url=http://localhost:9411/
# 每秒速率,即每秒最多能跟踪的请求,rate 优先
spring.sleuth.sampler.rate=10
# 跟踪信息收集采样比例,默认 0.1,为 1 是即 100%,收集所有
spring.sleuth.sampler.probability=1
  1. 下载并启动 zipkin.jar
curl -sSL https://zipkin.io/quickstart.sh | bash -s

java -jar zipkin.jar
  1. 访问 http://localhost:9411/ 可以看到较为友好的服务间调用信息
    在这里插入图片描述

Zipkin 原理

sleuth收集跟踪信息通过http请求发送给zipkin server,zipkin将跟踪信息存储,以及提供RESTful API接口,zipkin ui通过调用api进行数据展示。

默认内存存储,可以用mysql,ES等存储。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值