cloud-追踪中心

前言

在一个分布式系统中,服务之间相互依赖调用。一个请求有时需要经过几次转发之后才能到达最终的处理服务。这样,每个请求经过了哪些服务,每个服务消耗了多长时间,是后台开发人员迫切关系的问题。zipkin就是这样的一个分布式追踪系统。

术语

Span:基本工作单位。例如,发送RPC是一个新跨度,就像发送对RPC的响应一样。span由一个惟一的64位ID标识,并由另一个64位ID标识该span所在的跟踪。Span还有其他数据,比如描述、带时间戳的事件、键值注释(标记)、产生它们的跨越的ID和进程ID(通常是IP地址)。

Span可以启动和停止,它们跟踪它们的时间信息。一旦创建了一个span,就必须在将来的某个时候停止它。

启动跟踪的初始span称为根span。该span的ID值等于跟踪ID。

Trace:形成树形结构的一组跨度。例如,如果运行分布式大数据存储,则PUT请求可能会形成跟踪。

Annotation:用来在时间上记录一个事件的存在。使用Brave仪表化,我们不再需要为Zipkin设置特殊的事件来了解客户机和服务器是谁、请求从哪里开始和在哪里结束。然而,出于学习的目的,我们标记这些事件,以强调发生了什么样的行为。

  • cs:客户端发送。客户已经提出了请求。这个注释表示跨度的开始。
  • sr:服务器接收:服务器端收到请求并开始处理它。从这个时间戳中减去cs时间戳,就可以显示网络延迟。
  • ss:服务器发送。在完成请求处理时(当响应被发送回客户端时)添加注释。从这个时间戳中减去sr时间戳,就可以看出服务器端处理请求所需的时间。
  • cr:客户收到。表示跨度的结束。客户端已经成功接收到来自服务器端的响应。从这个时间戳中减去cs时间戳,就会显示出客户端从服务器接收响应所需的全部时间。

下面的图片展示了Span和Trace在系统中的外观,以及Zipkin注释:
在这里插入图片描述
注解的每一种颜色都表示一个跨度(从a到G有7个跨度)。

Trace Id = X
Span Id = D
Client Sent

此注释表明当前span的跟踪Id设置为X, span Id设置为D。此外,发生了Client Sent的事件。

下面的图片展示了span的父子关系:

在这里插入图片描述

zipkin服务

使用docker swarm部署:

version: "3.7"
networks:
  xxl:
    external: true
services:
  zipkin:
    image: openzipkin/zipkin
    networks:
      - xxl
    ports:
      - "9411:9411"

基本接入

gradle依赖

implementation 'org.springframework.cloud:spring-cloud-starter-sleuth'
implementation 'org.springframework.cloud:spring-cloud-sleuth-zipkin'

yml配置

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

查询

根据服务,时间,跟踪ID查找追踪记录。
在这里插入图片描述

依赖

根据条件查询服务之间的依赖关系。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值