【Spring Cloud】Spring Cloud Sleuth
Spring Cloud Sleuth 介绍
在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。
Spring Cloud Sleuth 提供了一套完整的服务跟踪的解决方案。其在分布式系统中提供追踪解决方案并且兼容支持了zipkin。
Zipkin是 Twitter 的一个开源项目,基于 Google Dapper实现。可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的 REST API 接口来辅助我们查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系统中出现的延迟升高问题并找出系统性能瓶颈的根源。除了面向开发的API接口之外,它也提供了方便的 UI 组件帮助我们直观的搜索跟踪信息和分析请求链路明细,比如:可以查询某段时间内各用户请求的处理时间等。
sleuth
英 [sluːθ] 美 [sluːθ]
n. 侦探
Sleuth 之 zipkin 搭建安装
下载地址:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/
Spring Cloud 从 F 版起已不需要自己构建 Zipkin Server了,只需调用jar包即可:
1 | java -jar zipkin-server-2.12.9-exec.jar |
运行控制台:http://localhost:9411/zipkin/
请求链路,一条链路通过Trace ld唯一标识,Span标识发起的请求信息,各span通过parent id关联起来
—条链路通过Trace ld唯一标识,Span标识发起的请求信息,各span通过parent id关联起来。
整个链路的依赖关系如下:
名词解释
- Trace:类似于树结构的Span集合,表示一条调用链路,存在唯一标识
- span:表示调用链路来源,通俗的理解span就是一次请求信息
Sleuth 链路监控展现
服务提供者
在服务提供者 cloud-provider-payment8001
中添加 Sleuth 链路。
- 导入 Maven 依赖:
1 | <!--包含了sleuth+zipkin--> |
- 配置文件:
1 | spring: |
- 业务类 PaymentController:
1 |
|
服务消费者
修改服务消费者 cloud-consumer-order80
,添加 Sleuth 链路。
- 导入 Maven 依赖:
1 | <!--包含了sleuth+zipkin--> |
- 配置文件:
1 | spring: |
- 业务类 OrderController:
1 | ... |
测试:依次启动eureka7001/8001/80 - 80调用8001几次测试下。
打开浏览器访问: http://localhost:9411: