zoukankan      html  css  js  c++  java
  • Spring Cloud10:Zipkin 服务跟踪

    一、概述

    为什么要有服务跟踪,分布式系统中有很多个服务在相互调用,调用关系是错综复杂的,如果这时出现了问题,我们在进行问题排查的时候,或者在优化架构的时候,工作量就比较大,这时候就需要我们能够准确的跟踪到每个网络请求,了解整个运行流程,如网络请求经过了哪些微服务,在每个微服务里是否有延迟等信息,这样就方便我们排查问题,这时我们就可以使用Spring Cloud Zipkin来实现。

    Spring Cloud Zipkin是一个可以采集并且跟踪分布式系统中请求数据的组件,让开发者可以更加直观的监控到请求在各个微服务所耗费的时间等,Zipkin包括Zipkin Server服务端和Zipkin Client客户端。Zipkin Server服务端是用来采集微服务之间的追踪数据的,通过Zipkin Client客户端完成数据的生成和展示。接下来就让我们进入实战演练!

    二、实战!快速搭建Zipkin Server和Zipkin client

    1.创建子工程zipkinServer,pom.xml配置如下:

        <dependency>
        	<groupId>org.springframework.boot</groupId>
        	<artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        
        <dependency>
        	<groupId>io.zipkin.java</groupId>
        	<artifactId>zipkin-server</artifactId>
        	<version>2.9.4</version>
        </dependency>
        
        <dependency>
        	<groupId>io.zipkin.java</groupId>
        	<artifactId>zipkin-autoconfigure-ui</artifactId>
        	<version>2.9.4</version>
        </dependency>
    

    2.创建配置文件,代码如下:

    server:
      port: 9090
    

    3.创建启动类,代码如下:

    package com.zing;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    import zipkin.server.internal.EnableZipkinServer;
    
    @SpringBootApplication
    @EnableZipkinServer
    public class ZipkinApplication {
    	public static void main(String[] args) throws Exception {
    		SpringApplication.run(ZipkinApplication.class, args);
    	}
    }
    

    注解说明

    ​ * @EnableZipkinServer:声明启动Zipkin Server

    4.创建zipkin Client。创建一个子工程,pom.xml文件配置如下:

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

    5.创建配置文件application.yml,配置如下:

    server:
      port: 8090
    spring:
      application:
        name: zipkinclient
      sleuth:
        web:
          client:
            enabled: true
        sampler:
          probability: 1.0
      zipkin:
        base-url: http://localhost:9090/
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka/
    

    属性说明

    ​ * spring.sleuth.web.client.enabled:设置开启请求跟踪

    ​ * spring.sleuth.sampler.probability:设置采样比例,默认是1.0

    ​ * spring.zipkin.base-url:Zipkin Server的地址

    6.创建启动类,代码如下:

    package com.zing;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class ZipKinClientApplication {
    	public static void main(String[] args) throws Exception {
    		SpringApplication.run(ZipKinClientApplication.class, args);
    	}
    
    }
    

    7.创建controller进行测试,代码如下:

    package com.zing.controller;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    @RequestMapping("/zipkin")
    public class ZipkinHandler {
    	
    	@Value("${server.port}")
    	private String port;
    	
    	@GetMapping("/index")
    	public String index() {
    		return this.port;
    	}
    	
    }
    

    8.依次启动注册中心,zipkinserver,zipkinclient三个服务,访问 http://localhost:9090/zipkin/ 可出现以下可视化界面:

    img

    9.我们访问一下要跟踪的接口 http://localhost:8090/zipkin/index 显示如下界面:

    img

    10.再次访问zipkin服务跟踪可视化界面地址http://localhost:9090/zipkin/ ,点击Find Traces按钮进入到如下页面

    img

    11.点击上图列表中数据,可进入具体展示列表,如下图:

    img

    12.点击列表中的数据,即可查看跟踪的服务的详细信息,如下图:

    img

    三、总结

    本篇文章我们通过zipkin来对我们微服务之间的请求进行了监控,可以看到一些详细信息,如耗费的时间,具体请求的路径方法都可以看到,以上就是Zipkin的使用。

  • 相关阅读:
    南阳33(蛇形填数)规律题;
    南阳241(字母统计)
    南阳57(6174问题)
    android图形基础知识
    Linux中yum手动安装、手动建立仓库文件夹关联实现关联包自动安装、yum相关命令使用
    debug连线指令
    Qt之信号连接,你Out了吗?
    hdu-4607-Park Visit
    MySQL 分区表 partition线上修改分区字段,后续进一步学习partition (1)
    如何用正则将多个空格看成一个空格结合spllit()方法将文本数据入库
  • 原文地址:https://www.cnblogs.com/kylinxxx/p/14510993.html
Copyright © 2011-2022 走看看