转载声明 : 该文章出处为 扛麻袋的少年
本文目录:
写在开头
接上一篇文章:Spring Cloud Stream 消息驱动。掌握了 Spring Cloud Stream
,使 MQ 之间通信更方便。本文我们再来学习另一个全新的组件:Spring Cloud Sleuth 分布式链路追踪
。
1.Spring Cloud Sleuth 的由来
飞机票直达:Spring Cloud Sleuth 官网
在微服务框架中,一个由客户端发起的请求,在后端系统中会经过多个不同的微服务节点调用,协同操作产生最后的请求结果。每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现 高延时
或者 错误
,都会引起整个请求最后的失败。
Spring Cloud Sleuth 提供了分布式系统中一套完整的服务跟踪的解决方案,并且兼容支持了zipkin,完美的解决了多个微服务之间链路调用的问题。
一句话总结: 就是用来处理服务之间调用关系的。
2.调用结构图
3.环境准备
Zipkin 是 Twitter 的一个开源项目,允许开发者收集 Twitter 各个服务上的监控数据,并提供查询接口。
我们需要先准备一个 Zipkin 环境。Spring Cloud 从F版起已不需要自己构建 Zipkin server了,只需要调用jar包即可
。当前使用版本为 H版。我们只需要下载 Zipkin jar包,使用 java -jar xxx
的方式启动即可。
点击链接:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server ,下载 zipkin-server-2.12.9-exec.jar
。启动就OK了,如图所示。
通过 http://loclahost:9411 就能进入到 Zipkin 为我们提供的可视化界面,一派清新的样子,尤其是中文界面,真的爱了爱了。
4.Sleuth测试环境搭建
本次测试,采用之前已有环境。在 客户端(80)
调用 服务端(8001)
提供的服务,服务调用使用 openFeign
的方式。此处就不过多介绍代码,代码部分请到文末链接下载。
❤ 服务端/客户端 进行相同配置
Ⅰ.都需要引入 zipkin + sleuth pom 依赖
<!--引入sleuth+zipkin依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
Ⅱ.都需要在 applicaiton.yml 添加 zipkin、sleuth 相同配置
spring:
# 应用名
application:
name: cloud-payment-service
zipkin:
base-url: http://localhost:9411 #监控数据要打到9411zipkin上
sleuth:
sampler:
probability: 1 #采样率值介于0到1,1则表示全部采集
Ⅲ. 配置告一段落,具体业务下载代码查看吧
就是一个简单的微服务调用过程,客户端
调用 服务端
提供的服务。
Ⅳ.微服务服务调用测试
通过http://localhost/consumer/payment/get/31
进行服务调用,调用成功后,我们打开 http://localhost:9411
Zipkin 控制台就可以看到具体服务调用情况。
点击相对应请求,还可以看到 模块间调用情况
、调用耗时
等更详细的信息。点击导航栏中的 依赖
项,还可以查看模块(调用、被调用)的依赖关系等,链路调用关系一目了然。真香!!!
本文代码下载地址:Spring Cloud Sleuth 分布式链路追踪,调用链路更清晰 (提取码:zw97)
Spring Cloud Sleuth
相对简单,篇幅也不长,没啥可说的,就是一个链路追踪工具,更深层次的内容,请 跳转官网了解。接下来要开启新篇章了。