博客
关于我
SpringCloud--09服务链路追踪Sleuth
阅读量:684 次
发布时间:2019-03-17

本文共 3173 字,大约阅读时间需要 10 分钟。

在微服务架构中,链路追踪是必不可少的功能。一个分布式系统通常包含多个服务单元,服务之间通过调用链连接。当发生错误或异常时,追踪这些异常并定位问题变得异常重要。为了实现服务调用链路的追踪,Spring Cloud Sleuth是一个强大的工具,它能够整合Zipkin等链路追踪组件,帮助开发者跟踪服务请求的全生命周期。

Spring Cloud Sleuth与Zipkin集成

Spring Cloud Sleuth提供了对Zipkin客户端的集成,允许开发者轻松实现链路数据的采集与存储。以下是实现Zipkin客户端的步骤:

  • 添加依赖

    在项目的POM文件中添加Spring Cloud Sleuth和Zipkin的依赖:

    org.springframework.cloud
    spring-cloud-starter-zipkin
    2.0.3.RELEASE
  • 配置Zipkin客户端

    在配置文件中(例如application.yml)添加以下配置:

    spring:  sleuth:    sampler:      probability: 1.0  zipkin:    base-url: http://localhost:9411
  • 启动服务

    确保所有服务(如Eureka注册中心、Zipkin服务器、用户服务和网关服务)都已正确启动,并确保各服务之间的通信正常。

  • 使用RabbitMQ传输链路数据

    为了提高链路数据传输的效率和可靠性,可以将Zipkin客户端与RabbitMQ结合使用:

  • 配置RabbitMQ发送器

    在Zipkin客户端的POM文件中添加RabbitMQ依赖:

    org.springframework.cloud
    spring-cloud-stream-binder-rabbit
    1.1.1.RELEASE
  • 修改Zipkin客户端配置

    在配置文件中设置RabbitMQ的发送配置:

    spring:  sleuth:    sampler:      probability: 1.0  zipkin:    sender:      type: rabbit    rabbitmq:      host: localhost      port: 5672      username: guest      password: guest
  • 启动消息队列服务

    确保RabbitMQ服务已启动,并能够接收来自Zipkin客户端的消息。

  • 将链路数据持久化到MySQL

    为了避免链路数据的丢失,可以选择将数据持久化存储到数据库中:

  • 创建数据库表

    使用MySQL创建以下表结构:

    CREATE TABLE zipkin_spans (    trace_id_high BIGINT DEFAULT 0 COMMENT '用于标识128位的trace_id',    trace_id BIGINT NOT NULL,    id BIGINT NOT NULL,    name VARCHAR(255) NOT NULL,    parent_id BIGINT,    debug BIT(1),    start_ts BIGINT COMMENT '记录事件的时间戳',    duration BIGINT COMMENT '记录事件的持续时间') ENGINE=INNODB ROW_FORMAT=COMPRESSED;CREATE TABLE zipkin_annotations (    trace_id_high BIGINT DEFAULT 0,    trace_id BIGINT NOT NULL,    span_id BIGINT NOT NULL,    a_key VARCHAR(255) NOT NULL COMMENT '注解的键',    a_value BLOB COMMENT '注解的值',    a_type INT NOT NULL COMMENT '注解的类型',    a_timestamp BIGINT,    endpoint_ipv4 INT COMMENT '接口的IP地址',    endpoint_ipv6 BINARY(16) COMMENT '接口的IPv6地址',    endpoint_port SMALLINT COMMENT '接口的端口',    endpoint_service_name VARCHAR(255) COMMENT '接口的服务名称') ENGINE=INNODB ROW_FORMAT=COMPRESSED;CREATE TABLE zipkin_dependencies (    day DATE NOT NULL,    parent VARCHAR(255) NOT NULL,    child VARCHAR(255) NOT NULL,    call_count BIGINT) ENGINE=INNODB ROW_FORMAT=COMPRESSED;
  • 配置Zipkin服务器

    修改Zipkin服务器的启动命令,添加MySQL持久化配置:

    java -jar zipkin-server-2.2.0-exec.jar \    --zipkin.collector.rabbitmq.addresses=localhost:5672 \    --zipkin.collector.rabbitmq.username=guest \    --zipkin.collector.rabbitmq.password=guest \    --STORAGE_TYPE=mysql \    --MYSQL_DB=springboot \    --MYSQL_USER=root \    --MYSQL_PASS=****** \    --MYSQL_HOST=localhost \    --MYSQL_TCP_PORT=3306
  • 验证数据存储

    启动服务并发送请求,检查数据库中是否有链路数据存储成功。

  • 集集成Elasticsearch存储链路数据

    在高并发场景下,使用Elasticsearch可以有效存储链路数据,并通过Kibana进行数据可视化:

  • 配置Elasticsearch客户端

    在项目的POM文件中添加Elasticsearch依赖:

    org.elasticsearch.client
    spring-data-elasticsearch
    1.3.2
  • 修改Zipkin客户端配置

    在配置文件中设置Elasticsearch的存储配置:

    spring:  data:    elasticsearch:      cluster-nodes: http://localhost:9300      replication-alias: my-index
  • 启动Elasticsearch服务

    确保Elasticsearch服务和Kibana服务已启动,并导入链路数据进行可视化。

  • 通过以上方法,可以实现链路数据的高效采集、传输和持久化,从而为微服务架构提供强大的调试和监控能力。

    转载地址:http://sghhz.baihongyu.com/

    你可能感兴趣的文章
    IDEA-@Slf4j和log标签&@Data(Lombok)无效
    查看>>
    SpringCloud-Eureka报错 Error creating bean with name解决
    查看>>
    Thymeleaf 生成下标,索引,使用Stat变量
    查看>>
    初始微服务---Springcloud发展【第一期】
    查看>>
    RAFT 拜占庭将军 共识算法
    查看>>
    UE4 错误列表 error码(只记录我遇到的情况,持续添加,未完成)
    查看>>
    cmd编译.java文件 : java:720: 错误: 编码GBK的不可映射字符 Why ? ? ? ?
    查看>>
    【Jquery】获取当前窗口的宽度值/高度值
    查看>>
    Android 架构组件 – 让天下没有难做的 App
    查看>>
    能解决数据可视化大屏需求的3款可视化工具
    查看>>
    如何在VSCode中定制JSON的IntelliSense
    查看>>
    椭圆曲线的定义
    查看>>
    多代理区块链框架客户端的操作
    查看>>
    RSA操作中的公钥和私钥的生成
    查看>>
    go语言中类的继承和方法的使用
    查看>>
    一些技术博客
    查看>>
    第01问:MySQL 一次 insert 刷几次盘?
    查看>>
    libvirtd:内部错误:Failed to apply firewall rule
    查看>>
    优先级队列2
    查看>>
    TiKV 源码解析系列文章(十三)MVCC 数据读取
    查看>>