zoukankan      html  css  js  c++  java
  • Spring Cloud Alibaba学习07Sleuth基本使用

    随着服务越来越多,对调用链的分析会越来越复杂。

    存在的问题:

    1.微服务之间的调用错综复杂,用户发送请求经历哪些服务,调用链不清楚,没有一个自动化工具来维护调用链。

    2.无法快速定位调用链中哪个环节出了问题。

    3.无法快速定位调用链中哪个环节比较耗时。

    Spring Cloud Sleuth提供分布式系统中链路追踪解决方案。

    同类产品有:

    1.SkyWallking:

    是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端悟代码侵入。目前已加入Apache孵化。

    2.cat是大众点评开源,基于java开发的实时应用监控平台,包括实时应用监控,业务监控。集成方案是通过代码埋点的方式实现监控。

    Sleuth术语:

    1.span(跨度):

    基本的工作单元。span用一个64位的id唯一标示。

    除ID外,span还包含其他数据,例如描述,时间戳事件,键值对的注解(标签),spanID,span父ID等。

    span被启动和停止时,记录了时间信息。初始化span被称为"root span",该span的id和trace的ID相等。

    2.trace(跟踪):

    一组共享"root span"的span组成的树状结构称为trace。

    trace也是用一位64位的ID唯一标识,trace中的所有span都共享trace的ID。

    3.annotation(标注):

    annotation用来记录事件的存在,其中,核心annotation用来定义请求的开始和结束。

    3.1 CS(Client Sent 客户端发送):客户端发起一个请求,该annotation描述span的开始

    3.2 SR(Server Received服务器端接收):服务器端得到请求并准备处理它。如果用SR减去CS时间戳,就可以得到网络延迟。

    3.3 SS(Server Sent服务器端发送):该annotation表明完成请求处理(当响应发回客户端时)。如果用SS减去SR时间戳,就能得到服务器端处理请求所需的时间。

    3.4 CR(Client Received客户端接收):span结束的标识。客户端成功接收到服务器端的响应。如果用CR减去CS的时间戳就可以得到从客户端发送请求到服务端响应的所需的时间。

    sr - cs = 网络延时
    
    ss - sr = 服务器上的请求处理时间
    
    cr - ss = 响应网络延时
    
    cr - cs = 请求的总时间

    Zipkin:可以与Sleuth结合使用,将Sleuth的数据展示出来。

    Zipkin下载地址:Central Repository: io/zipkin/zipkin-server (maven.org)

    下载后使用命令启动zipkin控制台

    java -jar zipkin-server-2.14.1-exec.jar --server.port=9999

    代码示例:

    在cloud-goods中写一个action调用cloud-jifen,在cloud-jifen调用cloud-order。

    形成一个调用链。

    cloud-goods、cloud-jifen、cloud-order都做如下两项设置,

    1.pom文件添加依赖:

    <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.配置文件中增加sleuth和zipkin的配置:

    spring:
      zipkin:
        base-url: http://localhost:9999
        discovery-client-enabled: false #不在nacos注册
      sleuth:
        sampler:
          rate: 100 #采样率

    配置完成后,重新启动服务。

    再发送请求,即可在zipkin的控制台看到请求的链路信息:

     

  • 相关阅读:
    计算机网络通信
    javap查看class文件
    JDK动态代理与CGLib动态代理
    error the @annotation pointcut expression is only supported at Java 5 compliance
    redis清空缓存
    利用HttpURLConnection发送请求
    linux下用命令导出mysql表数据
    adb push和pull使用
    mysqld.exe占比cpu 100% 解决方案
    养成好习惯
  • 原文地址:https://www.cnblogs.com/asenyang/p/15546064.html
Copyright © 2011-2022 走看看