springcloud之链路追踪sleuth

  • Post author:
  • Post category:其他





前言


随着分布式微服务系统的不断发展,系统中的服务调用会越来越复杂,服务调用的链路会更长,为了方便查看服务链路中的调用,获取链路调用每个节点的信息(比如响应时间之类的)就需要对服务的链路调用进行追踪。




一、sleuth是什么?


sleuth就是为了提供在微服务系统中对调用的链路进行追踪,并获取相应的信息,用户可视化的方式展现出来。主要作用就是一下四个方面

在这里插入图片描述

上图来源

https://www.cnblogs.com/dengpengbo/p/11109254.html

.



二、使用步骤

spring cloud sleuth整合了zipkin,其实sleuth的链路追踪就是zipkin。

以下时zipkin的官网说明,zipkin就是解决了分布式系统的链路追踪。

在这里插入图片描述



1.下载zipkin

链接:

下载地址

.

下载完成之后是zipkin-server-2.12.9-exec.jar的jar包

打开命令提示框输入(需要jdk1.8)
在这里插入图片描述

出现以下画面。说明启动成功

在这里插入图片描述



2.pom引入

此次准备用一个注册中心,一个调用方,一个提供方,一共三个微服务进行学习演示。

链接:

注册中心如何搭建?点击这里

.

在剩下的两个微服务中引入依赖

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



3.yml配置

spring:
  zipkin:
    base-url: http://localhost:9411
    sleuth:
      sampler:
        #采样率介于01之间,1表示全部采集。
        probability: 1



4.controller

调用方controller:

 @GetMapping("/getPayment/{id}")
    public CommonResult<Payment>  getPayment(@PathVariable("id") String id){
        log.info("查询PayMent信息");

        CommonResult<Payment> result =restTemplate.getForObject(serviceInstance.getUri()+"/payment/getOneById/"+id,CommonResult.class);
        log.info("返回结果:"+result.getMessage());
        return result;
    }

提供方controller:

 @GetMapping("/getOneById/{id}")
    public CommonResult getOneById(@PathVariable("id")String id){

        Payment payment =  paymentService.getById(id);
        log.info("根据Id获取订单信息:"+ JSON.toJSONString(payment));
        return new CommonResult(200,"获取成功"+port,payment);
    }



5.测试

调用方发起请求:

在这里插入图片描述

zipkin 出现以下界面

在这里插入图片描述

红框是请求的链路追踪的信息。点击出现以下画面

在这里插入图片描述

可以查看到服务之间的调用时间,服务个数,调用深度,span的个数。

span:表示的其中链路调用的信息记录。里面包括,父级服务调用id,此服务自身的调用Id,耗时等之类的信息。



三、总结

此篇文章是springcloud的组件学习的个人见解,欢迎大家指正,交流。



版权声明:本文为qq_33788786原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。