spring cloud 系列第7篇 —— sleuth+zipkin 服务链路追踪 (F版本)

一、简介

在微服务架构中,几乎每一个前端的请求都会经过多个服务单元来协调提供服务,从而形成复杂的调用链路。此时如果服务发生问题,我们就很难知道其具体发生在哪一个环节,想要解决这个问题,可以使用链路追踪技术。Zipkin 是一个开源的分布式跟踪系统,Spring 支持使用 Spring Cloud Sleuth 来轻松地集成 Zipkin。

二、项目结构

这里的项目是在之前的 spring-cloud-zuul 上进行集成,该项目产品接口的调用链路为: 网关 -> consumer -> producer ,整个过程历经三个环节的调用,因此可以直观展示 Zipkin 链路追踪的效果。

  • common:公共的接口和实体类;
  • consumer:服务的消费者,采用 Feign 调用产品服务;
  • producer:服务的提供者;
  • eureka:注册中心;
  • zuul: API 网关。

https://github.com/heibaiying

三、Zipkin 服务端

zipkin 服务端可以不用自己构建,直接从 官网 上下载对应的 JAR 包即可,启动命令如下。默认端口为 9411:

java -jar zipkin.jar

也可以直接从 Docker 仓库拉取镜像,然后进行启动:

docker run -d -p 9411:9411 openzipkin/zipkin

https://github.com/heibaiying

四、Zipkin 的集成

这里我们对 zuul、consumer、producer 三个模块都进行集成:

4.1 添加依赖

对三个模块 (zuul、consumer、producer ) 添加 Zipkin 依赖:

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

4.2 连接到服务端

分别在三个模块的 application.yml 配置文件中指定 zipkin 的服务地址 :

spring:
  zipkin:
    base-url: http://localhost:9411/
  # 可以指定监控数据的采样率
  sleuth:
    sampler:
      probability: 1

五、启动项目

分别启动 eureka,zuul,consumer,producer 四个项目,访问 http://localhost:9411/ ,查看我们的服务调用链路:

https://github.com/heibaiying

点击链路,即可以查看具体的调用情况:

https://github.com/heibaiying

展示信息说明:

  • Span:基本工作单元,发送一个远程调度任务就会产生一个 Span。
  • Trace:由一系列 Span 组成的,呈树状结构。 所有由这个请求产生的 Span 组成了对应的 Trace 。
  • SpanId:工作单元 ( Span ) 的唯一标识。
  • TraceId:一条请求链路 ( Trace ) 的唯一标识。

除了 TraceID 外,还需要 SpanID 用于记录调用的父子关系。每个服务会记录下 parent id 和 span id,通过他们可以组成一条完整调用链,可以对比链表的实现原理来理解。

源码GitHub地址:https://github.com/heibaiying/spring-samples-for-all

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值