https://blog.csdn.net/huangjinjin520/article/details/90114385
隋钊业务的发展,系统拆分导致系统调用的链路愈发复杂,一个前端请求可能最终需要调用很多次后端服务才能完成,当整个请求变慢护着不可行时,是无法得知该请求时由某个请求或者某些后端服务引起的,这时候就需要解决如何快速定位服务故障点,对症下药,于是就有了。分布式系统调用跟踪的诞生,现今业界分布式服务跟踪的理论基础源于GOOgle 的一篇论文<<Dapper, a Large-Scale Distributed Systems Tracing Infrastructure>>, 使用最广泛的开源实现时 Twitter 的 ZipKin。
ZipKin是一个开放源代码分布式的跟踪系统,它提供了在分布式环境下发送接收,存储和可视化跟踪的机制这使得我们能够对服务之间的活动进行关联,并更清楚的了解我们服务中发生的情况。
ZIpKin由Twitter公司开源,致力于收集服务的定时数据,以解决微服务架构中的延迟问题,,包括数据的收集,,存储,查找和展现。每个服务向zipkin报告计时数据,Zipkin会根据调用关系通过Zipkin UI生成依赖关系图,显示多少跟踪请求通过每个服务。该系统让开发者可以通过一个Web前端轻松的收集和分析数据,例如每次用户请求服务处理的时间等,可以方便的监控系统中存在的瓶颈。zipkin提供了可拆拔数据存储方式:In-Memory,MySql,Cassandra以及Elasticsearch.接下来的测试未方便直接采用In-Memory方式进行存储,生产推荐使用Elasticsearch.
搭建Ziokin-server
1,新建项目
zipkin-server, 对应的pom.xml 文件如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>spring-cloud</groupId>
<artifactId>zipkin-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>sc-zipkin-server</name>
<url>http://maven.apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
<version>2.11.8</version>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
<version>2.11.8</version>
</dependency>
</dependencies>
</project>
2,新建启动文件:
package com.taotao.zipkinserver;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import zipkin2.server.internal.EnableZipkinServer;
@EnableEurekaClient
@EnableZipkinServer
@SpringBootApplication
public class ZipkinServerApplication {
public static void main(String[] args) {
SpringApplication.run(ZipkinServerApplication.class, args);
}
}
备注:存在zipkin.server.EnableZipkinServer和zipkin2.server.internal.EnableZipkinServer两个EnableZipkinServer注解,其中zipkin.server.EnableZipkinServer已经被标志为过期,我们这里使用zipkin2.server.internal.EnableZipkinServer
3 新建配置文件application.yml
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
server:
port: 9411
spring:
application:
name: zipkin-server
4,分别先启动注册中心,再启动Zipkin-server
5,验证Zipkin 是否启动成功
访问: http://127.0.0.1:9411/zipkin/dependency/