1 编写zipkin server
pom依赖:
io.zipkin.java zipkin-server io.zipkin.java zipkin-autoconfigure-ui
启动类,添加 @EnableZipkinServer 注解:
@EnableZipkinServer@SpringBootApplicationpublic class ZipkinApplication { public static void main(String[] args) { SpringApplication.run(ZipkinApplication.class, args); }}
配置文件 application.yml:
server: port: 8088spring: application: name: zipkin
启动项目,访问:http://localhost:8088,因为此时没有整合其他微服务,没有接口调用信息,这里就没有相关信息显示
2 微服务整合zipkin
这里准备两个微服务:zipkin-sales和zipkin-user,这两个项目的pom除了提供的接口不一样之外,其他的均相同,其中 zipkin-sales 对外提供接口 /sales/queryGoodsList,/sales/queryGoodsList 接口内部调用 zipkin-user 的 /user/getUserInfo 接口,基于微服务之间的调用来观察链路信息。
pom依赖:
org.springframework.cloud spring-cloud-starter-eureka org.springframework.cloud spring-cloud-sleuth-zipkin
启动类,没有特殊注解:
@SpringBootApplication@EnableDiscoveryClientpublic 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: 8081spring: 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:
eureka:
zipkin-server:
zipkin-sales:
zipkin-user: