Spring Cloud Sleuth组件来实现微服务追踪。它可以追踪每个网络请求,了解它们经过了哪些微服务,延迟多少,每个请求所耗费的时间等。
Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System)。其主要功能是聚集来自各个异构系统的实时监控数据。
阿里云下载zipkin
启动zipkin-server
访问http://127.0.0.1:9411/zipkin/,打开客户端
搭建spring cloud项目
以Consul做为注册中心,搭建spring cloud项目
创建maven子模块,命名为cloud-consumer80-zipkin
①导入依赖
<dependencies> <dependency> <groupId>org.springframework.cloudgroupId> <artifactId>spring-cloud-starter-zipkinartifactId> dependency> <dependency> <groupId>org.springframework.cloudgroupId> <artifactId>spring-cloud-starter-openfeignartifactId> dependency> <dependency> <groupId>org.springframework.cloudgroupId> <artifactId>spring-cloud-starter-consul-discoveryartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-webartifactId> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-actuatorartifactId> dependency> dependencies>②创建application.yml配置文件,配置zipkin
server: port: 80 spring: application: name: consumer-zipkin cloud: consul: host: localhost port: 8500 discovery: service-name: ${spring.application.name} #服务追踪sleuth,zipkin相关配置 zipkin: base-url: http://localhost:9411 #zipkin服务端地址 sleuth: sampler: probability: 1③创建启动类
@EnableFeignClients @SpringBootApplication public class ConsumerZipkin80 { public static void main(String[] args) { SpringApplication.run(ConsumerZipkin80.class, args); } }④创建service接口
@Component @FeignClient("cloud-provider") //服务提供者在注册中心里的昵称 public interface IConsumerService { //对应服务提供者getUUID方法 @GetMapping("/provider/getUUID") public String getUUID(); }⑤创建controller控制类
@RequestMapping("consumer") @RestController public class ConsumerController { @Autowired private IConsumerService consumerService; @GetMapping("/getUUID") public String getUUID() { return consumerService.getUUID(); } }测试
①依次启动Consul注册中心,Zipkin服务端,服务提供者cloud-provider8001和服务消费者cloud-consumer80-zipkin
②浏览器访问http://localhost/consumer/getUUID,向服务消费者发送请求
③浏览器访问http://127.0.0.1:9411/zipkin/,打开zipkin客户端,点击RUN QUERY追踪请求