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