Spring Cloud 系列之链路监控 Sleuth - Zipkin
1.1 简介
1.1.1 概述
在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。在微服务比较少的时候,某一个服务出现问题我们可以很快排查出来。现在一个项目中微服务很多而且调用关系复杂,某一个服务出现问题我们很难能够排查出来。Spring Cloud Sleuth 为 Spring Cloud 实现了分布式跟踪解决方案,它大量借用了 Google Dapper、Twitter Zipkin 和 Apache HTrace 的设计。
1.1.2 相关术语
Spring Cloud Sleuth 采用的是 Google 的开源项目 Dapper 的专业术语。
Span
:基本工作单元,发送一个远程调度任务 就会产生一个 Span,Span 是一个 64 位 ID 唯一标识的,Trace 是用另一个 64 位 ID 唯一标识的,Span 还有其他数据信息,比如摘要、时间戳事件、Span 的 ID、以及进度 ID。
Trace
:一系列 Span 组成的一个树状结构。请求一个微服务系统的 API 接口,这个 API 接口,需要调用多个微服务,调用每个微服务都会产生一个新的 Span,所有由这个请求产生的 Span 组成了这个 Trace。
Annotation
:用来及时记录一个事件的,一些核心注解用来定义一个请求的开始和结束 。这些注解包括以下:
♘ cs - Client Sent:客户端发送一个请求,这个注解描述了这个 Span 的开始
♘ sr - Server Received:服务端获得请求并准备开始处理它,如果将其 sr 减去 cs 时间戳便可得到网络传输的时间。
♘ ss - Server Sent(服务端发送响应):该注解表明请求处理的完成(当请求返回客户端),如果 ss 的时间戳减去 sr 时间戳,就可以得到服务器请求的时间。
♘ cr - Client Received(客户端接收响应):此时 Span 的结束,如果 cr 的时间戳减去 cs 时间戳便可以得到整个请求所消耗的时间。
1.2 Zipkin
1.2.1 Zipkin 服务端
Spring Cloud 从 F 版开始就不需要自己构建服务端了,只需要使用他提供的 jar 就可以了 ☛ 下载地址,启动 jar 访问 9411 端口就可以看到页面了。
1.2.2 Zipkin 客户端
☞ 相关依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
☞ 配置文件
# 在需要被监控的服务中加入如下配置
spring:
zipkin:
base-url: http://127.0.0.1:9411
sleuth:
sampler:
# 采样值介于 0 - 1 之间,1 表示全部采集
percentage: 1
☞ 测试
请求被监控的服务,我们乐意在 Zipkin 的 UI 界面中看到请求耗时等数据信息。
还没有评论,来说两句吧...