sleuth、zipkin 分布式链路追踪

sleuth

Distributed tracing for Spring Cloud applications, compatiblewith Zipkin, HTrace and log-based(e.g. ELK)tracing.

Spring cloud Sleuth 是 Spring Cloud 的组成部分之一,为SpringCloud 应用实现了一种分布式追踪解决方案,兼容 Zipkin ,HTrace 和 log-based

核心概念

Span 一个工作单元,比如一次RPC 或 Http 请求过程,spanId 变量使用唯一的 64 位ID 标识

Trace 一条请求调用链路组成的 Span 集合,类似树结构 , TraceId 标识一个Trace

spring boot 集成 sleuth

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

zipkin 设计背景

zipkin 是依据 google 发表的分布式链路追踪系统Dapper 论文 ,由 Twitter开发并开源的。

还有很多分布式追踪系统,如 naver 的 Pinpoint , Apache 的 HTrace ,阿里的鹰眼 Trace , 京东的Hydra 等

为什么需要zipkin

随着业务越来越负责,系统进行各种拆分,一个前端的请求可能需要多次的服务调用才能完成,当请求变慢或不可用,无法知道是哪个服务导致。通过zipkin分布式链路追踪可以解决这些问题

zipkin 可以将 sleuth 追踪信息可视化

Zipkin 支持将链路追踪保存到 mysql 数据库,需要首先准备好表

https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql-v1/src/main/resources/mysql.sql

spring boot 使用 Zipkin

jar 包下载地址

https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/

准备好表以及 zipkin jar 包后,启动服务

java -jar zipkin.jar --server.port=8402 --zipkin.storage.type=mysql --zipkin.storage.mysql.db=febs_cloud_base --zipkin.storage.mysql.username=root --zipkin.storage.mysql.password=123456 --zipkin.storage.mysql.host=localhost --zipkin.storage.mysql.port=3306 --zipkin.collector.rabbitmq.addresses=localhost:5672 --zipkin.collector.rabbitmq.username=febs --zipkin.collector.rabbitmq.password=123456

此处 zipkin 是通过读取 rabbitMQ 的消息,因此项目需要集成改消息队列

项目依赖

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

yml 配置文件指定 rabbitmq

spring:
  zipkin:
    sender:
      type: rabbit
  sleuth:
    sampler:
      probability: 1
  rabbitmq:
    host: localhost
    port: 5672
    username: febs
    password: 123456

通过浏览器打开 zipkin ui

上述是采用 sleuth rabbitmq zipkin 的优化版本,也可以单独的使用 sleuth + zipkin 进行链路查看

参考:https://blog.csdn.net/forezp/article/details/70162074

sleuth 原理: https://zhuanlan.zhihu.com/p/176481130

看云:https://www.kancloud.cn/mrbird/spring-cloud/1263713

zipkin: https://www.jianshu.com/p/5df2e83d0ef8

原文地址:https://www.cnblogs.com/bytecodebuffer/p/14525168.html