zoukankan      html  css  js  c++  java
  • SpringCloud Sleuth 使用

    1. 介绍

      Spring-Cloud-SleuthSpring Cloud的组成部分之一,为SpringCloud应用实现了一种分布式追踪解决方案,其兼容了Zipkin, HTracelog-based追踪
        相关说明: zipkin 
          Span基本工作单元,例如,在一个新建的span中发送一个RPC等同于发送一个回应请求给RPCspan通过一64ID唯一标识,trace以另一个64ID表示,span还有其他数据信息,比如摘要、时间戳事件、关键值注释(tags)spanID、以及进度ID(通常是IP地址)

    span在不断的启动和停止,同时记录了时间信息,当你创建了一个span,你必须在未来的某个时刻停止它。

    Trace一系列spans组成的一个树状结构,例如,如果你正在跑一个分布式大数据工程,你可能需要创建一个trace

    Annotation用来及时记录一个事件的存在,一些核心annotations用来定义一个请求的开始和结束

    • cs - Client Sent -客户端发起一个请求,这个annotion描述了这个span的开始
    • sr - Server Received -服务端获得请求并准备开始处理它,如果将其sr减去cs时间戳便可得到网络延迟
    • ss - Server Sent -注解表明请求处理的完成(当请求返回客户端),如果ss减去sr时间戳便可得到服务端需要的处理请求时间
    • cr - Client Received -表明span的结束,客户端成功接收到服务端的回复,如果cr减去cs时间戳便可得到客户端从服务端获取回复的所有所需时间 

    SpanTrace在一个系统中使用Zipkin注解的过程图形化:

    2. 使用
        使用http://start.spring.io/  生成项目
        pom.xml  文件如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>zipkinclient</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>zipkinclient</name>
    <description>Demo project for Spring Boot</description>
    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.3.RELEASE</version>
    <relativePath/><!-- lookup parent from repository -->
    </parent>
    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    </properties>
    <dependencies>
    <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>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    </dependency>
    </dependencies>
    <dependencyManagement>
    <dependencies>
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>Camden.BUILD-SNAPSHOT</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    </dependencies>
    </dependencyManagement>
    <build>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    </plugins>
    </build>
    <repositories>
    <repository>
    <id>spring-snapshots</id>
    <name>Spring Snapshots</name>
    <url>https://repo.spring.io/snapshot</url>
    <snapshots>
    <enabled>true</enabled>
    </snapshots>
    </repository>
    <repository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/milestone</url>
    <snapshots>
    <enabled>false</enabled>
    </snapshots>
    </repository>
    </repositories>
    </project>
     
    3. 编写调用service 
        都是spring rest  service   
       
    @RequestMapping("/demo")
    public String getinfo(){
    LOG.log(Level.INFO, "RestDemo demo backend is being called");
    return "dalongdemo";
    }
    @Bean // 此处可以使用配置说明
    public Sampler defaultSampler() {
    return new AlwaysSampler();
    }
    }
     
    4. 调用方式:
     
    public class FirstController {
    @Autowired
    public RestTemplate restTemplate;
    @RequestMapping("/first")
    public String first(){
    String result=restTemplate.getForObject("http://localhost:8987/second", String.class);
    return "from [second]"+result;
    }
    @Bean
    public Sampler defaultSampler() {
    return new AlwaysSampler();
    }
    }
    5. 配置zipkin 访问地址:
         application.properties
    server.port=8988
    spring.zipkin.base-url=http://XXXXXXX:9411
    spring.application.name=first
     
    6. 启动服务
     mvn   spring-boot:run
    7. 查看请求信息,以及服务依赖
     
      还是比较方便的,建议看看官方的例子以及说明文档:http://cloud.spring.io/spring-cloud-sleuth/1.0.x/
       
     
     
        
  • 相关阅读:
    girdview
    c#中&&,||的应用
    ToString()和Convert.ToString()的区别
    日期格式化
    线程间操作ui
    基于k3cloud做的东西
    格式化金额字段添加千位符
    SQL 分页查询
    xammp 配置虚拟主机
    jQuery事件对象event的属性和方法
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/6219124.html
Copyright © 2011-2022 走看看