SpringCloud之链路追踪整合Sleuth(十三)

前言

SpringCloud 是微服务中的翘楚,最佳的落地方案。

在一个完整的微服务架构项目中,服务之间的调用是很复杂的,当其中某一个服务出现了问题或者访问超时,很

难直接确定是由哪个服务引起的,所以就有了 Spring Cloud Sleuth 链路跟踪。通过它,我们就可以很清楚直观

的了解每一个服务请求经过了哪些服务,用时多久,谁依赖谁或者被谁依赖。

代码

  • product-service

          
              <dependency>
                 <groupId>org.springframework.cloud</groupId>
                 <artifactId>spring-cloud-starter-sleuth</artifactId>
                </dependency>
    • service层
    @Override
        public Product findById(int id) {
            logger.info("product service");
            return daoMap.get(id);
        }
  • order-service
        <dependency>
                 <groupId>org.springframework.cloud</groupId>
                 <artifactId>spring-cloud-starter-sleuth</artifactId>
                </dependency>
    • web层
     1     @RequestMapping("/save")
     2     @HystrixCommand(fallbackMethod = "saveOrderFail")
     3     public Object save(@RequestParam("user_id") int userId, @RequestParam("product_id") int productId, HttpServletRequest request) {
     4 //        String token = request.getHeader("token");
     5 //        String cookie = request.getHeader("cookie");
     6         logger.info("order service");
     7 //        System.out.println(token);
     8 //        System.out.println(cookie);
     9         Map<String, Object> data = new HashMap<>();
    10         data.put("code", 0);
    11         data.put("data", productOrderService.save(userId, productId));
    12         return data;
    13     }
  • 执行结果

    order

  • 2019-10-22 20:12:33.130  INFO [order-service,bc9f3fc07473127b,4069d9f942d534fe,false] 15784 --- [derController-2] c.t.o.controller.OrderController         : order service
    ?
  • product
    2019-10-22 20:12:33.138  INFO [product-service,bc9f3fc07473127b,88a890468bdb7e73,false] 15076 --- [nio-8772-exec-5] c.t.p.service.impl.ProductServiceImpl    : product service
    ?

    总结:

    1、第一个值,spring.application.name的值

    2、第二个值,96f95a0dd81fe3ab ,sleuth生成的一个ID,叫Trace ID,用来标识一条请求链路,一条请求链路中包含一个Trace ID,多个Span ID

    3、第三个值,852ef4cfcdecabf3、spanid 基本的工作单元,获取元数据,如发送一个http

    4、第四个值:false,是否要将该信息输出到zipkin服务中来收集和展示。

原文地址:https://www.cnblogs.com/dalianpai/p/11722701.html

时间: 2024-10-31 23:23:49

SpringCloud之链路追踪整合Sleuth(十三)的相关文章

分布式链路追踪(Sleuth、Zipkin)

技术背景 在微服务架构中,随着业务发展,系统拆分导致系统调用链路愈发复杂,一个看似简单的前端请求可能最终需要调用很多次后端服务才能完成,那么当整个请求出现问题时,我们很难得知到底是哪个服务出了问题导致的,这时就需要解决一个问题,如何快速定位服务故障点,于是,分布式系统调用链追踪技术就此诞生了. ZipKin Zipkin 是一个由Twitter公司提供并开放源代码分布式的跟踪系统,它可以帮助收集服务的时间数据,以解决微服务架构中的延迟问题,包括数据的收集.存储.查找和展现. 每个服务向zipki

十二、springcloud之展示追踪数据 Sleuth+zipkin

一.Zipkin简介 Zipkin是Twitter的一个开源项目,它基于Google Dapper实现.我们可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的REST API接口来辅助我们查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系统中出现的延迟升高问题并找出系统性能瓶颈的根源.除了面向开发的API接口之外,它也提供了方便的UI组件来帮助我们直观的搜索跟踪信息和分析请求链路明细,比如:可以查询某段时间内各用户请求的处理时间等. 上图展示了Zipkin的基础架构,它主要有

spring cloud 入门系列八:使用spring cloud sleuth整合zipkin进行服务链路追踪

好久没有写博客了,主要是最近有些忙,今天忙里偷闲来一篇. =======我是华丽的分割线========== 微服务架构是一种分布式架构,微服务系统按照业务划分服务单元,一个微服务往往会有很多个服务单元,一个请求往往会有很多个单元参与,一旦请求出现异常,想要去定位问题点真心不容易,因此需要有个东西去跟踪请求链路,记录一个请求都调用了哪些服务单元,调用顺序是怎么样的以及在各个服务单元处理的时间长短.常见的服务链路追踪组件有google的dapper.twitter的zipkin.阿里的鹰眼等,它们

Spring Cloud全链路追踪实现(Sleuth+Zipkin+RabbitMQ+ES+Kibana)

简介 在微服务架构下存在多个服务之间的相互调用,当某个请求变慢或不可用时,我们如何快速定位服务故障点呢?链路追踪的实现就是为了解决这一问题,本文采用Sleuth+Zipkin+RabbitMQ+ES+Kibana实现. Spring Cloud Sleuth Trace:从客户端请求到系统边界,再到系统边界返回客户端响应. Span:每一次调用埋入一个调用记录,即为 “Span”,一系列有序的Span构成一个Trace. Zipkin Zipkin 是由Twitter公司开源的一个分布式追踪系统

利用SpringBoot+Logback手写一个简单的链路追踪

目录 一.实现原理 二.代码实战 三.测试 最近线上排查问题时候,发现请求太多导致日志错综复杂,没办法把用户在一次或多次请求的日志关联在一起,所以就利用SpringBoot+Logback手写了一个简单的链路追踪,下面详细介绍下. 一.实现原理 Spring Boot默认使用LogBack日志系统,并且已经引入了相关的jar包,所以我们无需任何配置便可以使用LogBack打印日志. MDC(Mapped Diagnostic Context,映射调试上下文)是log4j和logback提供的一种

基于 SkyWalking 实现服务链路追踪

SkyWalking简介 SkyWalking是一个开源的观测平台,用于从服务和云原生等基础设施中收集.分析.聚合以及可视化数据.SkyWalking 提供了一种简便的方式来清晰地观测分布式系统,甚至可以观测横跨不同云的系统.SkyWalking 更像是一种现代的应用程序性能监控(Application Performance Monitoring,即APM)工具,专为云原生,基于容器以及分布式系统而设计 SkyWalking 在逻辑上分为四部分:探针.平台后端.存储和用户界面.其架构图如下:

聊聊分布式链路追踪

原文链接:http://lidawn.github.io/2018/12/26/distribute-tracing/ 起因 最近一直在做分布式链路追踪的调研和实践,整理一下其中的知识点. 什么是链路追踪 分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务.分布式数据库.分布式缓存等,使得后台服务构成了一种复杂的分布式网络.在服务能力提升的同时,复杂的网络结构也使问题定位更加困难.在一个请求在经过诸多服务过程中,出现了某一个调用失败的情况,查询具体的异常由哪一个服务引起的就变得十分

整合Sleuth

Sleuth是 springcloud 分布式跟踪解决方案. Sleuth 术语: 跨度(span ) :Sleuth 的基本工作单元,他用一个64位的id唯一标识.出ID外,span还包含 其他的数据,如 描述,时间戳事件,键值对注解等,spanid span父ID等. trace 跟踪:一组span组成的树状结构称为 trace. annotation 标注: cs 客户端发送 SR 服务端接收 SS 服务端发送 CR 客户端接收 整合Sleuth: <dependency> <gr

molten:PHP 应用透明链路追踪工具

本文和大家分享的主要是php中应用透明链路追踪工具molten相关内容,一起来看看吧,希望对大家学习php有所帮助. molten molten是应用透明链路追踪工具. molten追踪php核心调用库运行时信息并且按照zipkin/optracing格式输出信息. molten提供多种sapi, 多种采样类型, 上报追踪状态, 模块控制和多种数据落地 类型等功能. 依赖于molten很容易构建基于php语言的 分布式全链路追踪系统 目前已经运行在生产环境上千台机器上. 目录 安装 以下是你需要