一.Zipkin 是什么?
Zipkin的官方介绍:https://zipkin.apache.org/
Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),基于 Google Dapper的论文设计而来,由 Twitter 公司开发贡献。其主要功能是聚集来自各个异构系统的实时监控数据。分布式跟踪系统还有其他比较成熟的实现,例如:Naver的Pinpoint、Apache的HTrace、阿里的鹰眼Tracing、京东的Hydra、新浪的Watchman,美团点评的CAT,skywalking等。
二.为什么用 Zipkin?
随着互联网发展越来越壮大,系统也越来越复杂。分布式系统中系统之间的互相调用也越来越错综复杂,这时我们排查一个服务来龙去脉也越加困难,甚至我们都很难定位到哪个服务拖慢了整体的响应速度。 Zipkin分布式跟踪系统就能很好的解决这样的问题。
1.zipkin帮我们定位系统用了哪些服务
2.服务之间是怎么互相依赖的
3.请求的执行路径
4.服务之间调用的耗时
三.链路追踪的原理
每个请求会生成一个TraceId(可以理解一条链路的ID)串联每次SpanId形成一条完整的链路。
1.Span :基本的工作单位‘
2.Trace :一组Span组成的树形结构(链路)
3.Clent Sent 客户端发起请求的时间,比如 dubbo 调用端开始执行远程调用之前
4.Client Receive 客户端收到处理完请求的时间。
5.Server Receive 服务端处理完逻辑的时间。
6. Server Receive 服务端收到调用端请求的时间。
四.搭建Zipkin服务
docker pull openzipkin/zipkin:2.17.2
docker run -p 9411:9411 openzipkin/zipkin:2.17.2
http://127.0.0.1:9411
五.搭建Zipkin客户端
引入maven包
compile 'org.springframework.cloud:spring-cloud-starter-zipkin:2.2.2.RELEASE'
application.properties
spring.zipkin.base-url=http://127.0.0.1:9411/
spring.zipkin.sender.type=web#用http去请求zipkin 也可以配置Mq
spring.sleuth.sampler.probability=0.1
6.测试
EUREKA-SERVER 的 getport接口去调用 EUREKA-SERVER 的getPort接口,中间使用 向rabbitmq 推送2条数据
点击进去可以看到完整的链路信息和每个步骤的耗时
来源:oschina
链接:https://my.oschina.net/u/4039389/blog/3235946