分布式链路跟踪springcloud-Sleuth和springcloud-Zipkin

发布时间 2023-08-08 11:58:08作者: 爵岚

分布式链路跟踪springcloud-Sleuth和springcloud-Zipkin

前言

各大厂分布式链路跟踪系统架构对比
随着互联网架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务、消息收发、分布式数据库、分布式缓存、分布式对象存储、跨域调用,这些组件共同构成了繁杂的分布式网络,那现在的问题是一个请求经过了这些服务后其中出现了一个调用失败的问题,只知道有异常,但具体的异常在哪个服务引起的就需要进入每一个服务里面看日志,这样的处理效率是非常低的。

一、sleuth和zipkin是什么?

  • Spring Cloud Sleuth是Spring Cloud提供的分布式系统服务链追踪组件,它大量借用了Google的Dapper,Twitter的Zipkin。
  • Zipkin是一个链路跟踪工具,可以用来监控微服务集群中调用链路的通畅情况

使用前提:SpringCloud解决方案下,存在两个子项目,并在一个项目中使用RestTemplate或者Feign等方法调用另外一个项目中的接口
生产环境的链路追踪需要具备以下功能

  • 追踪 迅速定位为题出在哪里
  • 分析问题出在哪里
  • 通知 责任人【短信 邮件 微信】
  • 友好的界面 统计 图表

二、使用步骤

1.添加依赖

代码如下(示例):

 

<dependency>                                                                                                        
    <groupId>org.springframework.cloud</groupId>                                                                                                        
    <artifactId>spring-cloud-starter-sleuth</artifactId>                                                                                                        
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>                                                                                        

 

2.yaml配置(每个微服务都需要)

代码如下(示例):

 

spring:    
  application:    
    name: api-gateway    
  zipkin:    
    base-url: http://127.0.0.1:9411/ #zipkin server的请求地址    
    discoveryClientEnabled: false #让nacos把它当成一个URL,而不要当做服务名    
  sleuth:    
    sampler:    
      probability: 1.0 #采样的百分比    

3 启动java -jar访问测试

http://localhost:9411