书接上文,继续跟着周阳老师学习SpringCloud的分布式跟踪框架Sleuth。
一、Spring Cloud Sleuth
1.1 Sleuth
Spring Cloud Sleuth为Spring Cloud实现了分布式跟踪,在分布式系统中提供追踪解决方案并且兼容支持了zipkin。
1.2 基本概念
Span:工作的基本单位,类似与树结构的Span集合,表示一条调用链路,存在唯一标识。例如,发送RPC是一个新的跨度,就像发送响应到RPC一样。Span是由一个唯一的64位ID来标识的,而另一个64位ID用于跟踪。Span还具有其他数据,如描述、时间戳事件、键值标注(标记)、导致它们的span的ID和进程ID(通常是IP地址)。
可以启动和停止跨度,并跟踪其时间信息。 创建跨度后,必须在将来的某个时刻停止它。
启动跟踪的初始范围称为根跨度。 该范围的ID值等于跟踪ID。
Trace:一组Span形成树状结构。表示调用链路来源,通俗的理解Span就是一次请求信息。例如,如果运行分布式大数据存储,则可能由PUT请求形成跟踪。
1.3 下载和启动
SpringCloud从F版起就不需要自己构建zipkin server,只需要自己运行jar包就行了。下载地址。
java -jar zipkin-server-2.23.9-exec.jar
启动结果 访问http://localhost:9411/zipkin/
二、项目实战
2.1 对8001和80修改pom,引入zipkin依赖。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
增加修改8001和80的yml文件
zipkin:
base-url: http://localhost:9411
sleuth:
sampler:
probability: 1
8001中PaymentController增加paymentZipkin()方法
@GetMapping("/payment/zipkin")
public String paymentZipkin(){
return "hi,i'am paymentZipkin server fall back,welcome !~!";
}
80中OrderController增加paymentZipkin()方法
@GetMapping("/consumer/payment/zipkin")
public String paymentZipkin(){
String result = restTemplate.getForObject("http://localhost:8001"+"/payment/zipkin",String.class);
return result;
}
2.2 依次启动7001、8001和80进行测试
如果启动不成功,需要用maven clean即可 多次使用80访问测试 http://localhost:80/consumer/paymentZipkin80 如果80访问报错,则需要注释ApplicationContext中的@LoadBalanced 注解
然后打开http://localhost:9411/zipkin/查看依赖 结果如下 代码下载
参考文章 https://www.cnblogs.com/wwjj4811/p/13629508.html https://blog.csdn.net/niugang0920/article/details/81259990
|