• SpringCloud Sleuth+Zipkin 分布式链路追踪


    Sleuth+Zipkin用来实现分布式系统的链路追踪。

    Sleuth组件用于日志埋点、记录链路数据,Zipkin组件用于展示链路数据。


    Sleuth的使用

    (1)创建消费者、提供者时勾选Spring Cloud Tracing -> Sleuth

    也可以手动添加依赖:

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

    (2)在消费者、提供者处理业务的类中添加成员变量

    //使用的是slf4j的日志,不要导错了
    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    在处理业务的方法中(消费者调用提供者、提供者处理业务的方法中),输出日志

    logger.info("正在执行user-service的findOrdersByUserId方法,调用服务order-service");

    内容根据需要修改。

    Sleuth输出的日志往往是空的,只输出服务名:[order-service,,,]

    第(2)步是为了解决此问题,使Sleuth输出的日志有内容。

    [order-service,cd99e95b12d13310,b6e08d7f788441bf,false]

    • 第一个是spring.application.name,服务名
    • 第二个是sleuth生成的Trace ID,唯一标识一条请求链路
    • 第三个是sleuth生成的Span ID,Span ID是链路的基本单元,标识一个http请求的元数据,比如一个服务调用产生的http请求。1条链路中包含1个Trace ID、多个Span ID。
    • 第四个表示是否会将该信息传输到zipkin服务中收集、展示,配置了zipkin就是true,没配置就是false

     

     

     


     

      

     

    zipkin的使用

    zipkin是大规模分布式系统的一个APM工具(Application Performance Management),基于Google Dapper实现,搭配sleuth可以实现可视化的链路调用分析。

    APM工具常用的还有EagleEye 鹰眼、CAT。

     

    zipkin组成:Collector、Storage、Restful API、Web UI组成。

     

    (1)搭建zipkin服务器

    https://zipkin.io/pages/quickstart.html   提供的方式下载速度都很慢,不推荐

     

    到下面的地址直接下载编译打包好的jar,下载的是最新版的zipkin:

    https://search.maven.org/remote_content?g=io.zipkin&a=zipkin-server&v=LATEST&c=exec

    zipkin是springboot项目,运行jar需要jdk环境,如果没有配置jdk环境的需要先配置jdk环境。

    双击jar运行(在Linux上可以使用java  -jar命令来运行),浏览器地址栏输入 127.0.0.1:9411 进入zipkin页面,ip是zipkin所在机器的ip,zipkin默认使用的端口时9411。

     

     

    (2)创建消费者、生产者时勾选Spring Cloud Tracing -> Zipkin Client

    也可以手动加依赖:

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

    (3)在消费者、提供者中添加配置

    spring:
      application:
        #服务名称
        name: order-service
      zipkin:
        #zipkin服务器的地址,sleuth会将链路数据传输到zipkin服务器,默认是localhost:9411
        base-url: 192.168.1.9:9411
      sleuth:
        sampler:
          #采样率,0-1上的小数,比如0.5是将sleuth 50%的链路的数据传输给zipkin
          probability: 1.0

    采样率以前我搞的时候默认是0.1,现在的默认值似乎好像是1.0(不确定),开发的时候可以设置大些,上线的时候设置小些,

    因为采样太多很占网络带宽,而且zipkin把采样的链路数据直接存储在内存中(定时清理),采样率太高zipkin服务器会很占机器内存。

    启动应用,调用服务,在zipkin页面可看到链路各部分的耗时情况,优化耗时多的部分,比如加多线程、异步、缓存。

  • 相关阅读:
    用动画切换按钮的状态
    用UICollectionView实现无限轮播图
    水平方向瀑布流
    UICollectionViewFlowLayout使用示例
    旋转木马效果
    Greenplum集群或者Postgresql出现死锁肿么办?
    Lucene的全文检索学习
    Jms规范学习
    Nginx的相关问题
    keepalived+Nginx实现主备保障Nginx的高可用。
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/12814359.html
Copyright © 2020-2023  润新知