1、概要
一般的,一个分布式服务跟踪系统,主要有三部分:
- 数据收集
- 数据存储
- 数据展示
然而这三个部分其实不都是由SpringCloud Sleuth(下面我简称为Sleuth)完成的,Sleuth负责数据的收集,而数据的存储和数据的展示由Zipkin完成
首先我们需要搞清楚,链路追踪功能由Sleuth(数据收集),Zipkin(数据存储、数据展示)这两个组件组合完成的。
下面我们对它们分别介绍
2、Sleuth
①产生原因
在微服务框架中,一个客户端的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前端请求都会产生一个复杂的服务调用链路,链路中的任何一环出现高延迟或错误都会导致请求的失败
Springcloud考虑到这个问题,Sleuth即为长链路调用的链路跟踪监控组件
②简介
SpringCloud Sleuth官网:Spring Cloud Sleuth
这是SpringCloud Sleuth的概念图:
trace:一次完整的请求,从服务开始到执行完成
span:在一次trace中,每调用一个服务就会记录调用的信息和响应时间,这就是一个span
下图中,Trace全为X表示一次调用,其中每个服务调用都有一个span,不同服务调用span不同。
可见sleuth能够通过trace和span,追踪到一次调用经过了哪些服务,每个服务的耗费时间
3、Zipkin
①简介
Zipkin是一个开源的追踪系统,它负责收集,存储数据并展示给用户
这里说Zipkin的收集不同于Sleuth的收集,Sleuth是通过监控来实现信息的收集,而Zipkin的收集是将Sleuth采集的数据进行接收。
官网也表达的很清楚:
本文中,Sleuth负责数据的收集,Zipkin负责存储和展示
Zipkin提供了不同的数据存储方式:
- Merory(内存存储)
- Mysql(关系型数据库)
- Cassandra(非关系型数据库ps本人还没有接触过)
- Elasticsearch
4、搭建
①安装zipkin
下载地址:
运行:
java -jar zipkin-server-2.12.9-exec.jar
进入控制台:
http://localhost:9411/zipkin/
②Provider
在之前的工程cloud-provider-payment8001上进行修改
添加依赖:
<!--包含了sleuth+zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
添加配置:
spring:
zipkin:
base-url: http://localhost:9411 #zipkin Server的地址
sleuth:
sampler:
probability: 1 #采样率值介于0到1之间,1则表示全部采集(一般不为1,不然高并发性能会有影响)
在Controller中添加方法:
@GetMapping("/payment/zipkin")
public String paymentZipkin(){
return "paymentZipkin...";
}
③Consumer
在之前的工程cloud-consumer-order80(服务消费者)上进行更改
添加依赖:
<!--包含了sleuth+zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
添加配置:
spring:
zipkin:
base-url: http://localhost:9411 #zipkin Server的地址
sleuth:
sampler:
probability: 1 #采样率值介于0到1之间,1则表示全部采集(一般不为1,不然高并发性能会有影响)
在Controller中添加方法:
@GetMapping("/consumer/payment/zipkin")
public String paymentZipkin(){
String result = restTemplate.getForObject("http://localhost:8001" + "/payment/zipkin", String.class);
return result;
}
④测试
前面已经启动了zipkin Server了
启动Eureka注册中心7001,Order80,Payment8001
调用Order接口,Order接口调用了Payment的接口:
http://localhost/consumer/payment/zipkin
进入Zipkin面板查看:
查看服务依赖:
标签:Sleuth,调用,Zipkin,SpringCloud,zipkin,链路,cloud From: https://www.cnblogs.com/zko0/p/17062359.html