springcloud 服务追踪

本文介绍SpringCloud Sleuth与Zipkin在微服务架构中的应用,阐述了链路追踪的重要性和原理,包括Span、Trace和Annotation等概念,并详细说明了如何在项目中配置和使用Sleuth与Zipkin。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springcloud提供了一个组件Sleuth,可以为分布式系统系统提供链路追踪。

为什么需要Sleuth

一个微服务系统通常有很多个服务单元,业务比较复杂,如果出现了错误或者异常,不容易定位。因为一个请求可能调用多个服务,服务之间有可能存在比较复杂的调用关系,这就导致了问题难以定位。
为了解决这个问题,就需要进行链路追踪,跟踪一个请求有哪些服务参与,这些服务参与的顺序是什么样的,做到每一个请求的步骤都清晰可见,这样出了错误就比较容易定位出多的地方了。

twitter开源了一个链路追踪组件zipkin,可以集成到springcloud Sleuth里面。

专业术语

  1. Span:基本工作单元:比如调用一个微服务单元就会产生一个新的Span
  2. Trace:由一系列的Span组成,比如请求一个微服务系统的API接口,会调用多个服务,调用每一个微服务都会产生一个新的Span,所有这个请求产生的Span组成了Trace,是一个树状结构。
  3. Annotation:用于记录一个事件,可以用来定义一个请求的开始和结束:
    • cs——Client Sent:客户端发送一个请求,表示一个Span的开始
    • sr——Server Received:服务端收到请求并准备开始处理。如果用Server Received减去Client Sent的时间戳,就可以得到网络传输的时间。
    • ss——Server Sent:服务端发送响应,表明服务端已经完成了处理。用Server Sent减去server Received,得到服务端的处理时间。
    • cr——Client Received:客户端接收响应,此时Span结束。用Client Received的时间戳减去Client Sent的时间戳,就得到了请求的时间戳。

具体使用

首先引入sleuth的pom依赖,引入spring-cloud-starter-sleuth
安装启动zipkin,使用docker方式,docker run -d -p 9411:9411 openzipkin/zipkin然后访问地址localhost:9411就可以看到展示页面

在项目中添加依赖spring-cloud-starter-zipkin注意这一个依赖包含了sleuth和zipkin的依赖。
添加配置

zipkin:
  base-url: http//localhost:9411/
sleuth:
  sampler:
    percentage: 1

这里暂时把抽样百分比设置为1,也就是百分之百,方便观察,可以在展示页面,选择对应的Service Name,看到一次请求访问量几个接口,分别好多长时间,很清楚。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值