SpringCloud Sleuth分布式请求链路追踪

简介: SpringCloud Sleuth分布式请求链路追踪

SpringCloud Sleuth分布式请求链路追踪

在这里插入图片描述

简介

  • 在微服务架构中,一个由客户端发起的请求子啊后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一个出现高延时的错误都会引起整个请求最后的失败

github仓库 : https://github.com/spring-cloud/spring-cloud-sleuth

官网 : https://cloud.spring.io/spring-cloud-sleuth/reference/html/

在这里插入图片描述
链路追踪底层使用的Zipkin 但是最新的F版不需要构建自己的Zipkin Server了 ,只需要调用 jar包就好

下载jar包:http://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/

在这里插入图片描述
下载完后,终端jar包的目录里,然后输入:java -jar zipkin-server-2.12.9-exec.jar运行。

在这里插入图片描述
http://localhost:9411/zipkin/

在这里插入图片描述

原理

在这里插入图片描述
在这里插入图片描述

服务提供者cloud-provider-payment8001
  1. pom添加
 <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-zipkin</artifactId>
   </dependency>
  1. yml
zipkin:
    base-url: http://localhost:9411
  sleuth:
    sampler:
      probability: 1  #采样率值介于0到1之间,1则表示全部采集(一般不为1,不然高并发性能会有影响)
  1. 新建controller
@RestController

public class PaymentController {

    @GetMapping("/payment/zipkin")
    public String paymentZipkin(){
        return "paymentZipkin...";
    }
}
服务消费者cloud-consumer-order80
  1. 在pom中添加(和提供者一样)
  2. 在yml中添加(和提供者一样)
  3. 在OrderController中添加:
@GetMapping("/consumer/payment/zipkin")
public String paymentZipkin(){
    String result = restTemplate.getForObject("http://localhost:8001" + "/payment/zipkin", String.class);
    return result;
}

测试

启动 Eureka , 然后依次启动 客户端
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关实践学习
分布式链路追踪Skywalking
Skywalking是一个基于分布式跟踪的应用程序性能监控系统,用于从服务和云原生等基础设施中收集、分析、聚合以及可视化数据,提供了一种简便的方式来清晰地观测分布式系统,具有分布式追踪、性能指标分析、应用和服务依赖分析等功能。 分布式追踪系统发展很快,种类繁多,给我们带来很大的方便。但在数据采集过程中,有时需要侵入用户代码,并且不同系统的 API 并不兼容,这就导致了如果希望切换追踪系统,往往会带来较大改动。OpenTracing为了解决不同的分布式追踪系统 API 不兼容的问题,诞生了 OpenTracing 规范。OpenTracing 是一个轻量级的标准化层,它位于应用程序/类库和追踪或日志分析程序之间。Skywalking基于OpenTracing规范开发,具有性能好,支持多语言探针,无侵入性等优势,可以帮助我们准确快速的定位到线上故障和性能瓶颈。 在本套课程中,我们将全面的讲解Skywalking相关的知识。从APM系统、分布式调用链等基础概念的学习加深对Skywalking的理解,从0开始搭建一套完整的Skywalking环境,学会对各类应用进行监控,学习Skywalking常用插件。Skywalking原理章节中,将会对Skywalking使用的agent探针技术进行深度剖析,除此之外还会对OpenTracing规范作整体上的介绍。通过对本套课程的学习,不止能学会如何使用Skywalking,还将对其底层原理和分布式架构有更深的理解。本课程由黑马程序员提供。
相关文章
|
30天前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
130 0
|
18天前
|
SQL 数据库 Windows
SpringCloud集成seata分布式事务控制
SpringCloud集成seata分布式事务控制
14 0
|
30天前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
61 1
|
30天前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
778 0
|
监控 网络协议 Java
分布式链路追踪- SkyWalking使用手册
分布式链路追踪- SkyWalking使用手册
906 0
分布式链路追踪- SkyWalking使用手册
|
5月前
|
存储 监控 数据可视化
Golang链路追踪:实现高效可靠的分布式系统监控
Golang链路追踪:实现高效可靠的分布式系统监控
|
5月前
|
消息中间件 监控 安全
RocketMQ x OpenTelemetry 分布式全链路追踪最佳实践(3)
RocketMQ x OpenTelemetry 分布式全链路追踪最佳实践
58 0
RocketMQ x OpenTelemetry 分布式全链路追踪最佳实践(3)
|
5月前
|
消息中间件 Java Kafka
RocketMQ x OpenTelemetry 分布式全链路追踪最佳实践(2)
RocketMQ x OpenTelemetry 分布式全链路追踪最佳实践(2)
56 0
RocketMQ x OpenTelemetry 分布式全链路追踪最佳实践(2)
|
5月前
|
消息中间件 Cloud Native Apache
RocketMQ x OpenTelemetry 分布式全链路追踪最佳实践(1)
RocketMQ x OpenTelemetry 分布式全链路追踪最佳实践
43 0
RocketMQ x OpenTelemetry 分布式全链路追踪最佳实践(1)
|
9月前
|
SpringCloudAlibaba 算法 Java
Spring Boot项目如何实现分布式日志链路追踪
作为一名后端开发工程师,排查系统问题用得最多的手段之一就是查看系统日志,在当下主要的分布式集群环境中一般使用ELK(Elasticsearch , Logstash, Kibana)来统一收集日志,以便后续查看日志定位追踪相关问题。但是在并发情况下,大量的系统用户即多线程并发访问后端服务导致同一个请求的日志记录不再是连续相邻的,此时多个请求的日志是一起串行输出到文件中,所以我们筛选出指定请求的全部相关日志还是比较麻烦的,同时当后端异步处理功能逻辑以及微服务的下游服务调用日志追踪也有着相同的问题。

热门文章

最新文章