• 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服务中来收集和展示。

       

  • 相关阅读:
    mybatis框架查询用户表中的记录数
    文件的上传和下载
    怎样在一条sql语句中将第一列和第二列加和的值作为第三列的值
    [OS] 进程的虚地址空间
    [网络] TCP/IP协议族各层的协议汇总
    [面试] C++ 虚函数表解析
    [OS] 堆栈、堆、数据段、代码段
    [算法] 并查集概念及其实现
    [OS] 我与大牛的对话!
    [C] int *p[4]与int (*q)[4]的区别
  • 原文地址:https://www.cnblogs.com/dalianpai/p/11722701.html
Copyright © 2020-2023  润新知