美文网首页后台开发专题Java服务器端编程
Spring cloud实践之道七(链路追踪Sleuth)

Spring cloud实践之道七(链路追踪Sleuth)

作者: hutou | 来源:发表于2017-07-19 21:41 被阅读159次

    服务追踪

    随着微服务数量逐渐增大,服务间的依赖关系越来越复杂,怎么分析它们之间的调用关系及相互的影响?Soring cloud提供了Sleuth组件来完成这个工作。下面的文章基本上是来自官网。

    术语

    Span: 基本工作单元,例如,在一个新建的span中发送一个RPC等同于发送一个回应请求给RPC,span通过一个64位ID唯一标识,trace以另一个64位ID表示,span还有其他数据信息,比如摘要、时间戳事件、关键值注释(tags)、span的ID、以及进度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时间戳便可得到客户端从服务端获取回复的所有所需时间
    系统示意图

    Spring Cloud Sleuth

    Spring Cloud Sleuth是对Zipkin的一个封装,对于Span、Trace等信息的生成、接入HTTP Request,以及向Zipkin Server发送采集信息等全部自动完成。
    Spring应用在监测到Java依赖包中有sleuth和zipkin后,会自动在RestTemplate的调用过程中向HTTP请求注入追踪信息,并向Zipkin Server发送这些信息。

    Sleuth项目

    源码地址

    1. 增加pom.xml依赖
            <dependency>
                <groupId>io.zipkin.java</groupId>
                <artifactId>zipkin-server</artifactId>
            </dependency>
            <dependency>
                <groupId>io.zipkin.java</groupId>
                <artifactId>zipkin-autoconfigure-ui</artifactId>
            </dependency>
    
    1. zipkin服务器
    @SpringBootApplication
    @EnableZipkinServer
    public class SleuthApplication {
        public static void main(String[] args) {
            new SpringApplicationBuilder(SleuthApplication.class).web(true).run(args);
        }
    }
    
    1. 配置文件application.properties
    spring.application.name=cloud-Sleuth-server
    server.port=9411
    
    1. 启动服务
      在运行zipkin服务之后,就可以在浏览器看到如下的效果


      显示的效果

    书写测试服务

    我们书写2个服务,一个服务消费另一个服务。通过在pom.xml文件中增加依赖,可以让通过RestTemplate的调用链路自动添加到zipkin服务器上

    1. pom.xml中增加依赖
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-sleuth</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-sleuth-zipkin</artifactId>
            </dependency>
    
    1. 修改配置文件,指定zipkin服务器
    spring.zipkin.base-url=http://XXXX:9411
    
    1. 依次启动服务,执行调用,在zipkin server上进行查看
    依赖示意图

    相关文章

      网友评论

        本文标题:Spring cloud实践之道七(链路追踪Sleuth)

        本文链接:https://www.haomeiwen.com/subject/lncehxtx.html