1 编写zipkin server
pom依赖:
<dependencies>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
</dependency>
</dependencies>
启动类,添加 @EnableZipkinServer 注解:
@EnableZipkinServer
@SpringBootApplication
public class ZipkinApplication {
public static void main(String[] args) {
SpringApplication.run(ZipkinApplication.class, args);
}
}
配置文件 application.yml:
server:
port: 8088
spring:
application:
name: zipkin
启动项目,访问:http://localhost:8088,因为此时没有整合其他微服务,没有接口调用信息,这里就没有相关信息显示
2 微服务整合zipkin
这里准备两个微服务:zipkin-sales和zipkin-user,这两个项目的pom除了提供的接口不一样之外,其他的均相同,其中 zipkin-sales 对外提供接口 /sales/queryGoodsList,/sales/queryGoodsList 接口内部调用 zipkin-user 的 /user/getUserInfo 接口,基于微服务之间的调用来观察链路信息。
pom依赖:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
</dependencies>
启动类,没有特殊注解:
@SpringBootApplication
@EnableDiscoveryClient
public class SalesApplication {
public static void main(String[] args) {
SpringApplication.run(SalesApplication.class,args);
}
}
配置文件 application.yml:
spring.zipkin.baseUrl 是 zipkin 的地址
spring.sleuth.sampler.percentage 采样率,默认0.1,因为是测试,这里设置为1,保证每次都会被记录
server:
port: 8081
spring:
application:
name: sales
zipkin:
baseUrl: http://localhost:8088
sleuth:
sampler:
percentage: 1
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
instance:
prefer-ip-address: true
启动两个项目,调用 http://127.0.0.1:8081/sales/queryGoodsList 接口之后访问 zipkin 界面:
点击 Find Traces 可以观察相关信息,点击 Dependencies 可以看到项目依赖关系:
3 代码
simple-core:https://code.aliyun.com/995586041/core-simple.git
eureka:https://code.aliyun.com/995586041/eureka.git
zipkin-server:https://code.aliyun.com/995586041/zipkin.git
zipkin-sales:https://code.aliyun.com/995586041/zipkin-sales.git
zipkin-user:https://code.aliyun.com/995586041/zipkin-user.git