转:https://blog.csdn.net/liaokailin/article/details/52077620java
zipkin
为分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪。mysql
在复杂的调用链路中假设存在一条调用链路响应缓慢,如何定位其中延迟高的服务呢?git
zipkin
的web UI
能够一眼看出延迟高的服务
zipkin
主要涉及四个组件 collector
storage
search
web UI
github
Collector
接收各service传输的数据Cassandra
做为Storage
的一种,也能够是mysql等,默认存储在内存中,配置cassandra
能够参考这里Query
负责查询Storage
中存储的数据,提供简单的JSON API
获取数据,主要提供给web UI
使用Web
提供简单的web界面执行以下命令下载jar包web
wget -O zipkin.jar 'https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec'
其为一个spring boot
工程,直接运行jarspring
访问 http://ip:9411nohup java -jar zipkin.jar &
使用zipkin涉及几个概念sql
Span:基本工做单元,一次链路调用(能够是RPC,DB等没有特定的限制)建立一个span,经过一个64位ID标识它,
span经过还有其余的数据,例如描述信息,时间戳,key-value对的(Annotation)tag信息,parent-id等,其中parent-id
能够表示span调用链路来源,通俗的理解span就是一次请求信息shell
Trace:相似于树结构的Span集合,表示一条调用链路,存在惟一标识maven
Annotation: 注解,用来记录请求特定事件相关信息(例如时间),一般包含四个注解信息分布式
cs - Client Start,表示客户端发起请求
sr - Server Receive,表示服务端收到请求
ss - Server Send,表示服务端完成处理,并将结果发送给客户端
cr - Client Received,表示客户端获取到服务端返回信息
BinaryAnnotation:提供一些额外信息,通常已key-value对出现