本文源码:GitHub·点这里 || GitEE·点这里
一、链路追踪简介
1、Sleuth组件简介
Sleuth是SpringCloud微服务系统中的一个组件,实现了链路追踪解决方案。可以定位一个请求到底请求了哪些具体的服务。在复杂的微服务系统中,如果请求发生了异常,可以快速捕获问题所在的服务。
2、项目结构
-
启动顺序如下
- 注册中心 node07-eureka-7001
- 链路数据收集服务 node07-zipkin-7003
- 服务提供 node07-provider-6001 node07-provider-6002
- 网关路由 node07-zuul-7002
二、搭建链路服务
1、核心依赖
1<dependency> 2 <groupId>io.zipkin.java</groupId> 3 <artifactId>zipkin-server</artifactId> 4</dependency> 5<dependency> 6 <groupId>io.zipkin.java</groupId> 7 <artifactId>zipkin-autoconfigure-ui</artifactId> 8</dependency>
- 启动类注解:@EnableZipkinServer
2、配置文件
1server: 2 port: 7003 3spring: 4 application: 5 name: node07-zipkin-7003 6eureka: 7 instance: 8 hostname: zipkin-7003 9 prefer-ip-address: true 10 client: 11 service-url: 12 defaultZone: http://registry01.com:7001/eureka/
三、服务配置
这里网关,zuul-7002,服务提供,provider-6001,provider-6002的配置相同。
1、核心依赖
1<dependency> 2 <groupId>org.springframework.cloud</groupId> 3 <artifactId>spring-cloud-starter-zipkin</artifactId> 4</dependency>
2、配置文件
1spring: 2 zipkin: 3 base-url: http://localhost:7003 4 sleuth: 5 sampler: 6 # 数据 100% 上传 7 percentage: 1.0
四、测试流程
1、注册中心
一次启动上述服务之后,查看注册中心:

2、请求流程
访问接口
http://localhost:7002/v1/api-6001/get6001Info
这个请求从网关服务进入,到达6001端口服务之后,请求6002端,最终返回结果。
-
6001接口
@Autowired private RestTemplate restTemplate ; @RequestMapping("/get6001Info") public String get6001Info (){ String server_name = "http://node07-provider-6002" ; return restTemplate.getForObject(server_name+"/get6002Info",String.class) ; }
-
6002接口
@RequestMapping(value = "/get6002Info",method = RequestMethod.GET) public String get6002Info () { LOG.info("provider-6002"); return "6002Info" ; }
3、链路管理界面
1)、UI界面
访问接口
http://localhost:7003/zipkin/

2)、依赖分析
如图点击,【依赖分析】,和上面描述的请求过程完全一致。 
五、源代码地址
1GitHub·地址 2https://github.com/cicadasmile/spring-cloud-base 3GitEE·地址 4https://gitee.com/cicadasmile/spring-cloud-base
