ZipKin
是一个开放源代码的分布式跟踪系统,用于收集服务的定时数据,以解决微服务架构中的延迟问题。包括数据的收集、存储、查找和展示。前端
每一个服务向 Zipkin
报告计时数据,Zipkin
会根据调用关系经过 Zipkin UI
生成依赖关系图,显示了多少跟踪请求经过每一个服务。该组件可让咱们经过一个 Web
前端轻松的收集和分析数据。例如用户每次请求服务的处理时间等,可方便的监测系统中存在的瓶颈。java
微服务架构是经过业务来划分服务的,使用 REST
调用。对外暴露的一个接口,可能须要不少个服务协同才能完成这个接口功能。web
若是链路上任何一个服务出现问题或者网络超时,都会造成致使接口调用失败。spring
随着业务的不断扩张,服务之间互相调用会愈来愈复杂。随着服务的愈来愈多,对调用链的分析会愈来愈复杂,以下图:浏览器
在 pom.xml
主要添加 zipkin
、 zipkin-server
和 zipkin-autoconfigure-ui
依赖网络
<dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin</artifactId> </dependency> <dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-server</artifactId> </dependency> <dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-autoconfigure-ui</artifactId> </dependency>
注意: 这里的 zipkin
版本号为 2.10.1
,须要将版本号托管到统一依赖管理项目中架构
在 application.yml
主要添加 zipkin
的相关配置app
management: metrics: web: server: auto-time-requests: false
在 Application
启动类中经过 @EnableZipkinServer
注解开启 Zipkin Server
功能分布式
@SpringBootApplication @EnableEurekaClient @EnableZipkinServer public class ZipkinApplication { public static void main(String[] args) { SpringApplication.run(ZipkinApplication.class, args); } }
在统一依赖管理项目中继承 Spring Boot 2.0.2.RELEASE
父项目,并声明 Spring Cloud Finchley.RC1
依赖版本。ide
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.2.RELEASE</version> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.RC1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
在当前项目 pom.xml
中主要添加依赖 spring-cloud-starter-zipkin
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
在 application.yml
中添加 zipkin
地址便可
spring: zipkin: base-url: http://localhost:9411
启动所有项目,打开浏览器访问:http://localhost:9411 ,出现如下界面
点击 Find a trace
,能够看到具体服务相互调用的数据
点击 Dependencies
,能够发现服务的依赖关系