Spring Cloud Sleuth + Zipkin 分布式链路追踪

一. 前言

在微服务框架中,一个由客户端发起的请求,在后端系统中会经过多个不同的微服务节点调用,协同操作产生最后的请求结果。每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现 高延时 或者 错误,都会引起整个请求最后的失败。

Spring Cloud Sleuth 提供了分布式系统中一套完整的服务跟踪的解决方案,并且兼容支持了zipkin,完美的解决了多个微服务之间链路调用的问题。

简单来说就是用来处理服务之间调用关系的。// TODO

二. Zpink环境准备

Zipkin 是 Twitter 的一个开源项目,允许开发者收集 Twitter 各个服务上的监控数据,并提供查询接口。

我们需要先准备一个 Zipkin 可视化面板环境。Spring Cloud 从Finchley版起已不需要自己构建 Zipkin server了,只需要调用jar包即可。我们只需要下载 Zipkin jar包,使用java -jar xxx的方式启动即可。

下载链接:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server
启动命令:java -jar zipkin-server-2.12.9-exec.jar

接下来通过 http://localhost:9411 即可访问Zpink 可视化面板

三. Sleuth测试环境搭建

本次测试,采用之前已有环境。在 客户端(order-service 8781) 调用 服务端(product-service 8771) 提供的服务(商品调用订单服务),服务调用使用 openFeign 的方式。此处就不过多介绍代码

服务端(调用端)/客户端(被调用端)进行相同配置

1. 引入 zipkin + sleuth pom 依赖

<!--引入sleuth+zipkin依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

2. 在 application.yml 中进行配置

spring:
  # 应用名
  application:
    name: xxxx-service
  zipkin:
    base-url: http://localhost:9411 #监控数据要打到9411zipkin上
  sleuth:
    sampler:
    probability: 1  #采样率值介于0到1,1则表示全部采集

3. 微服务调试测试

调用订单服务 http://127.0.0.1:9000/os/api/v1/order/save?product_id=2&user_id=1&token=1

order-service订单服务中调用了prduct-service商品服务,我们可以在看看zipkin控制台中查看链路具体信息

点击相对应请求,还可以看到 模块间调用情况调用耗时 等更详细的信息。点击导航栏中的 依赖 项,还可以查看模块(调用、被调用)的依赖关系等

四. 参考文献

https://blog.csdn.net/lzb348110175/article/details/107434917

猜你喜欢

转载自blog.csdn.net/Damao1183297959/article/details/108912249