调用监控基本都是通过google公开的Dapper论文实现的
Dapper论文中对分布式跟踪系统提出以下需求
- 性能低损耗:分布式跟踪系统对服务的性能损耗应尽可能做到可以忽略不计,尤其是对性能敏感的应用不能产生损耗
- 对应用透明:尽可能非侵入,尽可能低侵入,尽可能透明
- 可伸缩性:是不能因为集群扩大导致系统瘫痪
- 跟踪数据可视化和迅速反馈:即要有可视化的监控界面,从跟踪数据收集,处理到结果展现尽量做到快速。
- 持续监控
术语
- Span:基本工作单元。比如发送一次rpc请求就是一个新的Span。Span通过一个64位的ID标志,还包含有描述,时间时间戳,标签,调用它的Span的id,处理器id(一般为机器ip)。第一个Span是root span,它的id和traceid一样
- Trace : 一些列Span组成的树形结构,相当于一次调用链路。
- Annotation:标注,用来描述事件的实时状态,它表示一个Span的开始。
- cs:Client Sent。客户端发起请求,代表一个Span的开发
- sr:Server Received。代表服务方接收到请求开始处理,它减去cs就是通讯时间。
- ss:Server Sent.它代表请求处理完成,将相应数据返回给客户端。它减去sr的时间就是服务方处理时间。
- cr:Client Received。它表示客户端收到服务方的返回值,是当前span结束的信号。它减去cs就是一次请求完成的时间
工作原理
简单来说就是在header加入span,通过拦截器,client等方式嵌入。