Sleuth

概述

1、Spring Cloud Sleuth 为 Spring Cloud 提供分布式跟踪解决方案的 API,它与 OpenZipkin Brave 集成

2、Spring Cloud Sleuth 能够追踪请求和消息,这样就可以将该通信与相应的日志条目联系起来

(1)还可以将追踪信息导出到外部系统,以可视化延迟

(3)Spring Cloud Sleuth 直接支持 OpenZipkin 兼容系统

 

OpenZipkin

1、启动

java -jar zipkin-server-2.23.19-exec.jar

2、控制台

http://localhost:9411/zipkin/

 

术语

1、Span

(1)工作的基本单位,例如:发送一个 RPC 是一个新的 Span,正如发送一个 RPC 的响应一样

(2)Span 也有其他数据,如:描述、有时间戳的事件、键值注释(标签)、产生它们的 Span 的 ID,以及进程 ID(通常是 IP 地址)

(3)Span 可以被启动和停止,并保持跟踪其时间信息,一旦创建了一个 Span,必须在未来的某个时间点停止它

2、Trace:一组 Span 形成一个树状结构,例如:如果运行一个分布式大数据存储,一个 Trace 可能由一个 PUT 请求形成

3、Annotation / Event

(1)用来记录一个事件在时间上的存在

(2)从概念上讲,在一个典型的 RPC 场景中,标记这些事件是为了强调发生了什么样的行动(这并不意味着在物理上这样的事件会被设置在一个 Span 上)

(3)cs:Client Sent。客户端已经发出了请求,这个注解表示 Span 的开始

(4)sr:Server Received。服务器端收到了请求并开始处理它,sr 时间戳中减去 cs 的时间戳,就可以看出网络延迟的情况

(5)ss:Server Sent。在请求处理完成后进行注释(当响应被发回给客户端时),ss 时间戳中减去 sr 时间戳,可以看出服务器端处理该请求所需的时间

(6)cr:Client Received。标志着 Span 的结束,客户端已成功收到服务器端的响应。cr 时间戳中减去 cs 的时间戳,可以看出客户端从服务器端接收响应所需的全部时间

 

示例

1、服务提供者

(1)核心依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<!-- zipkin包括了sleuth以及sleuth-zipkin这两个依赖 -->
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-sleuth-zipkin</artifactId>
    </dependency>
</dependencies>

(2)yaml 配置

server:
  port: 8001

spring:
  application:
    name: cloud-service
  zipkin:
    base-url: http://localhost:9411
  sleuth:
    sampler:
      #采样率值介于 0 到 1 之间,1 则表示全部采集
      probability: 1

#省略注册配置

(3)业务方法

@GetMapping("/payment/zipkin")
public String paymentZipkin() {
    return "服务提供者被调用";
}

2、服务消费者

(1)核心依赖

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

(2)yaml 配置

server:
  port: 80

spring:
  application:
    name: cloud-service
  zipkin:
    base-url: http://localhost:9411
  sleuth:
    sampler:
      #采样率值介于 0 到 1 之间,1 则表示全部采集
      probability: 1

#省略注册配置

(3)业务方法

@GetMapping("/consumer/payment/zipkin")
public String paymentZipkin() {
    String result = restTemplate.getForObject("http://localhost:8001/payment/zipkin/", String.class);
    return result;
}
posted @   半条咸鱼  阅读(55)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示