spring cloud备忘笔记-8-服务追踪组件 ZipKin
笔记索引:
spring cloud备忘笔记-0-目录索引
ZipKin是搞嘛的?
我们使用微服务架构,随着业务不断的扩张,服务越来越多,之间的通信由于各种原因(网络不可靠)而发生延迟、瓶颈。几千个服务之间的调用,我们怎么判断哪里是否出现了这些问题呢?人自己去找记肯定是不行的。
于是为了方便我们了解系统的情况,需要开发链路追踪的功能出来,这里肯定别人已经做了,我们这里使用ZipKin 。
ZipKin 是一个开放源代码的分布式跟踪系统,由 Twitter 公司开源,它致力于收集服务的定时数据
,以解决微服务架构中的延迟问题
,包括数据的收集、存储、查找和展现。
每个服务向 ZipKin 报告计时数据,ZipKin 会根据调用关系通过 ZipKin UI 生成依赖关系图,显示了多少跟踪请求通过每个服务,该系统让开发者可通过一个 Web 前端轻松的收集和分析数据,例如用户每次请求服务的处理时间等,可方便的监测系统中存在的瓶颈。
服务端
创建工程步骤参考:spring cloud备忘笔记-0-目录索引
首先得写好服务端:
依赖:
<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>
其他部分和之前一样,pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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>
<parent>
<groupId>com.momomian</groupId>
<artifactId>hi-spring-cloud-dependencies</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../hi-spring-cloud-dependencies/pom.xml</relativePath>
</parent>
<artifactId>hi-spring-cloud-zipkin</artifactId>
<packaging>jar</packaging>
<name>hi-spring-cloud-zipkin</name>
<inceptionYear>2019-Now</inceptionYear>
<dependencies>
<!-- Spring Boot Begin -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Spring Boot End -->
<!-- Spring Cloud Begin -->
<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>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!-- Spring Cloud End -->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.momomian.hi.spring.cloud.zipkin.ZipKinApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
注意这里没有写版本,我们要在管理依赖的服务(hi-spring-cloud-dependencies)中pom先配置好依赖,设定版本:
<properties>
<zipkin.version>2.10.1</zipkin.version>
</properties>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin</artifactId>
<version>${zipkin.version}</version>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
<version>${zipkin.version}</version>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
<version>${zipkin.version}</version>
</dependency>
这样就托管了版本。没有问题了。
接下来写入口类
Application.java
主要是增加了@EnableZipkinServer
注解
@SpringBootApplication
@EnableEurekaClient
@EnableZipkinServer
public class ZipKinApplication {
public static void main(String[] args) {
SpringApplication.run(ZipKinApplication.class, args);
}
}
application.yml
spring:
application:
name: hi-spring-cloud-zipkin
server:
port: 9411
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8780/eureka
management:
metrics:
web:
server:
auto-time-requests: false
management这个配置是zipkin版本2.8后面要配的,2.8不用配。9411的端口是zipkin默认的端口。
提醒一下,对于正在学习的小伙伴,尽量手动去敲(pom文件不用),而不是复制。敲的同时你就会稍微记一下想一想是干嘛用的,不然你ctrl c/v一套啥都不去记,只能依赖笔记,过几天不看笔记就啥也不知道了。
比如之前创建项目的时候,我们手动创建熟练了,就是不断重复的工作,但是知识就记住了。否则你换个IDE就不会创建微服务项目了,那可以说是失败的学习。
客户端
对于服务端而言,其他需要监控的服务都是客户端,当然hi-spring-cloud-dependencies服务就没不必要监控了。
客户端也要加上依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
配置文件要加上增加 Zipkin Server 的地址:
spring:
zipkin:
base-url: http://localhost:9411
之后启动所有的项目,打开浏览器访问:http://localhost:9411/
点击Find Trace
即可看到各个服务之间的调用数据,点击Dependencies
会出现一个依赖关系图。就可以了。
笔记索引:
spring cloud备忘笔记-0-目录索引