springcloud-分布式请求链路追踪Sleuth
Posted yellowstreak
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springcloud-分布式请求链路追踪Sleuth相关的知识,希望对你有一定的参考价值。
概述
- 该技术出现的, 解决哪些问题
- 在微服务框架中, 一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果, 每一个前段请求都会形成一条复杂的分布式服务调用链路, 链路中任何一环出现高延时或错误都会引起整个请求的最后失败.
- 所以我们有必要知道该服务的服务调用的个数, 以及每一步所耗事件.
- Sleuth是什么
- Sleuth提供了一套完整的服务跟踪的解决方案.
- 兼容支持了zipkin(一个管监控, 一个管展示)
搭建链路监控步骤
- zipkin
- SpringCloud从F版起已不需要自己构建Zipkin server了, 只需要调用jar包即可.
- 下载: zipkin-server-2.12.9-exec.jar
- 运行该jar包
- java -jar zipkin-server-2.12.9-exec.jar
- java -jar zipkin-server-2.12.9-exec.jar
- 运行控制台
- http://localhost:9411/zipkin
- 调用链路
- 一请求链路, 一条链路通过Trace Id唯一标识, Span标识发起的请求信息, 各span通过parent id关联.
- 整个链路的依赖关系如下
- 一请求链路, 一条链路通过Trace Id唯一标识, Span标识发起的请求信息, 各span通过parent id关联.
- 名词解释
- Trace: 类似于树结构的Span集合, 表示一条调用链路, 存在唯一标识.
- span: 表示调用链路来源, 通俗的理解span就是一次请求信息.
- 服务提供者的编写
- 使用微服务cloud-provider-payment8001
- pom
<!-- 包含了sleuth+zipkin --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
- yml
- 增加如下操作
- 增加如下操作
- 业务类PaymentController
@GetMapping("/payment/zipkin ") public String paymentZipkin() { return "Hi, I am paymentZipkin server fall back"; }
- 服务消费者(调用方)
- 修改微服务cloud-consumer-order80
- pom
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
- yml
spring: application: name: cloud-order-service zipkin: base-url: http://localhost:9411 sleuth: sampler: probability: 1
- 业务类OrderController
@GetMapping("/consumer/payment/zipkin") public String paymentZipkin() { String result = restTemplate.getForObject("http://localhost:8001" + "/payment/zipkin/", String.class); return result; }
- 测试
- 依次启动7001, 7002, 8001, 80
- 访问 http://localhost/consumer/payment/zipkin
- 访问http://localhost:9411
- 出现以下界面
- 查看
- 出现以下界面
以上是关于springcloud-分布式请求链路追踪Sleuth的主要内容,如果未能解决你的问题,请参考以下文章
SpringCloud-2.0-周阳(16. 请求链路追踪 - SpringCloud Sleuth)
开启springcloud全家桶9:springcloud的分布式链路追踪利器 Sleuth
十springcloud之展示追踪数据 Sleuth+zipkin