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

Posted 天宇轩-王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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服务中来收集和展示。

     

以上是关于SpringCloud之链路追踪整合Sleuth(十三)的主要内容,如果未能解决你的问题,请参考以下文章

Sleuth+Zipkin 实现 SpringCloud 链路追踪

Sleuth+Zipkin 实现 SpringCloud 链路追踪

SpringCloud系列微服务的链路追踪

微服务实践之全链路追踪(sleuth,zipkin)详解-SpringCloud(2021.0.x)-4

微服务实践之全链路追踪(sleuth,zipkin)详解-SpringCloud(2021.0.x)-4

springcloud 项目一步一步搭建 SpringCloud Sleuth zipkin 链路追踪