什么是Zipkin?html
它是一个分布式链路跟踪系统它能够帮助收集时间数据,每一个应用程序向Zipkin报告定时数据,Zipkin UI呈现了一个依赖图表来展现多少跟踪请求通过了每一个应用程序;若是想解决延迟问题,能够过滤或者排序全部的跟踪请求,而且能够查看每一个跟踪请求占总跟踪时间的百分比。前端
什么要使用它?java
随着业务愈来愈复杂,系统也随之进行各类拆分,特别是随着微服务架构和容器技术的兴起,看似简单的一个应用,后台可能有几十个甚至几百个服务在支撑;一个前端的请求可能须要屡次的服务调用最后才能完成;当请求变慢或者不可用时,咱们没法得知是哪一个后台服务引发的,这时就须要解决如何快速定位服务故障点,Zipkin分布式跟踪系统就能很好的解决这样的问题。spring
简单的说zipkin就能够实现,那个服务有问题,服务于服务之间的依赖关系,运行时间等等架构
继续上篇说,附连接:https://www.cnblogs.com/zgwjava/p/10447542.html并发
建立zipkin模块app
Gradle分布式
compile 'io.zipkin.java:zipkin-server'
compile 'io.zipkin.java:zipkin-autoconfigure-ui'
ymlide
server: port: 9999 spring: application: name: zipkin-server
而后再看下启动类微服务
package org.gw.zipkin.server; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import zipkin.server.EnableZipkinServer; /** * @DATA 2019-02-28 00:17 * @Author 张国伟 WeChat:17630376104 * @Description TODO */ @EnableZipkinServer #次注解为标注zipkin服务端 @SpringBootApplication public class ZipkinServerProvider { public static void main(String[] args) { SpringApplication.run(ZipkinServerProvider.class, args); } }
咱们运行项目 http://localhost:9999/zipkin/
能够看到zipkin服务端已经启动,在这上面能够查看服务间调用记录,要想实现链路追踪必须服务之间有依赖关系也就是调用关系,有RestTemplate在上一章咱们已经说过服务间如何调用。
咱们再来看下客户端如何配置
#eureka客户端 server: port: 10001 spring: application: name: project-shopping-mall thymeleaf: prefix: classpath:/templates/ cache: false zipkin: base-url: http://localhost:9999/ sleuth: sampler: percentage: 1.0 #0.1-1.0链路跟踪的数据上传的几率,百分比 eureka: client: service-url: defaultZone: http://localhost:8888/eureka/ instance: prefer-ip-address: true logging: path: /Users/mac/logs/shop level: org.gw.shopping.mai: info
我在controller这里加上了日志
咱们看下控制台,为了测试我刷新了好几回,调用了好几回
能够看到有两个id,和一个true,true为是否想zikpin上传数据,接下来咱们看下zipkin服务端
能够看到刚刚服务之间的调用信息,咱们点击某一个
能够清晰的看到服务的信息,相应时间,固然也能够经过控制台的信息来查找服务调用信息,咱们再来看下依赖
清晰的看到那个服务调用了那个服务。
并发量大的时候普通的日志处理不了这么多信息,如何出异常了很难判断究竟是那个服务,那一边出了问题,因此zipkin链路解决这个问题,任何问题清晰可见。
最后再看下服务客户端gradle添加的依赖,上面忘说了
compile 'org.springframework.cloud:spring-cloud-starter-sleuth' compile 'org.springframework.cloud:spring-cloud-sleuth-zipkin'
客户端必须添加这两个依赖
下一章健康检查,感谢支持!!!