2021-10-11Spring Cloud Sleuth链路追踪

链路追踪简介
1.为什么需要链路追踪
微服务架构是⼀个分布式架构,它按业务划分服务单元,⼀个分布式系统往往有很多个服务单元。 由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很难去定位。主要体现在,⼀个请求 可能需要调⽤很多个服务,⽽内部服务的调⽤复杂性,决定了问题难以定位。所以微服务架构中,必须 实现分布式链路追踪,去跟进⼀个请求到底有哪些服务参与,参与的顺序⼜是怎样的,从⽽达到每个请 求的步骤清晰可⻅,出了问题,很快定位。
Google开源的 Dapper链路追踪组件,并在2010年发表了论⽂《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》,这篇⽂章是业内实现链路追踪的标杆和理论基础,具 有⾮常⼤的参考价值.
2.链路追踪的基本术语

Spring Cloud Sleuth采⽤的是Google的开源项⽬Dapper的专业术语。如图7-1所示 Span:基本⼯作单元,发送⼀个远程调度任务 就会产⽣⼀个Span,Span有⼀个64位ID唯⼀标识 的,Trace是⽤另⼀个64位ID唯⼀标识的,Span还有其他数据信息,⽐如摘要、时间戳事件、Span 的ID、以及进度ID。 Trace:⼀系列Span组成的⼀个树状结构。请求⼀个微服务系统的API接⼝,这个API接⼝,需要调 ⽤多个微服务,调⽤每个微服务都会产⽣⼀个新的Span,所有由这个请求产⽣的Span组成了这个 Trace。 Annotation:⽤来及时记录⼀个事件的,⼀些核⼼注解⽤来定义⼀个请求的开始和结束 。这些注解 包括以下: cs - Client Sent -客户端发送⼀个请求,这个注解描述了这个Span的开始 sr - Server Received -服务端获得请求并准备开始处理它,如果将其sr减去cs时间戳便可得到 ⽹络传输的时间。 ss - Server Sent (服务端发送响应)–该注解表明请求处理的完成(当请求返回客户端),如果 ss的时间戳减去sr时间戳,就可以得到服务器请求的时间。 cr - Client Received (客户端接收响应)-此时Span的结束,如果cr的时间戳减去cs时间戳 便可以得到整个请求所消耗的时间。

SpringCloud链路追踪的组件–Zipkin
1.客户端pom.xml中添加依赖如下:

```java
<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
<dependency>
 <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency>

2.在客户端的application.yml里配置链路追踪

spring:
 application:
  name: cloud-payment-service
 zipkin:
  base-url: http://192.168.220.12:9411
  sender:
   type: web
 sleuth:
  sampler:
   probability: 1
  1. spring.zipkin.base-url:指定Zipkin的服务端,⽤于发送链路报告

  2. spirng.zipkin.sender.type:web表示使⽤http发送数据

  3. spring.sleuth.sampler.probability:采样率,值为[0,1]之间,这⾥表示100%采样报告

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值