1. 程式人生 > 實用技巧 >12.SpringCloud Sleuth (分散式請求鏈路追蹤)

12.SpringCloud Sleuth (分散式請求鏈路追蹤)

1.概述

為什麼會出現這個技術?需要解決哪些問題?是什麼
解決

2.搭建鏈路監控步驟

zipkin

下載

SpringCloud從F版起已不需要自己構建Zipkin server了,只需要呼叫jar包即可https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/ zipkin-server-2.12.9.exec.jar啟動jar
java -jar zipkin-server-2.12.9-exec.jar

執行控制檯

http://localhost:9411/zipkin/
完整的呼叫鏈路上圖what
名詞解釋
  • Trace:類似於樹結構的Span集合,表示一條呼叫鏈路,存在唯一標識
  • span:表示呼叫鏈路來源,通俗的理解span就是一次請求資訊

服務提供者

改造cloud-provider-payment8001pom
<!--包含了sleuth+zipkin-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
yml
server:
  port: 8001

spring:
  application:
    name: cloud-payment-service
  zipkin:  #zipkin的配置
    base-url: http://localhost:9411 #註冊到sleuth的服務端地址
    sleuth:
      sampler:
      probability: 1
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: org.gjt.mm.mysql.Driver
    url: jdbc:mysql://localhost:3306/springcloud2020?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: 123456

mybatis:
  mapperLocations: classpath:mapper/*/*.xml
  type-aliases-package: com.chl.springcloud.entity
#eureka
eureka:
  client:
    register-with-eureka: true #註冊中心註冊自己
    fetchRegistry: true   #去服務中心拉去服務列表需要去檢索服務
    service-url:
      #單機版的註冊 eureka的服務中心註冊地址
      defaultZone: http://eureka7001.com:7001/eureka
修改業務類PaymentController
/**
     * 測試sleuth的鏈路追蹤
     * @return
     */
    @GetMapping("/payment/zipkin")
    public String paymentZipkin() {
        return "hi ,i'am paymentzipkin server fall back,welcome to atguigu,O(∩_∩)O哈哈~";
    }

服務消費者(呼叫方)

修改cloud-consumer-order80pom
<!--包含了sleuth+zipkin-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
yml
server:
  port: 80

spring:
  application:
    name: cloud-order-service
  zipkin:
    base-url: http://localhost:9411 #註冊到sleuth的服務端地址
    sleuth:
      sampler:
      probability: 1

eureka:
  client:
    register-with-eureka: true
    fetchRegistry: true
    service-url:
      defaultZone: http://localhost:7001/eureka
修改業務類OrderController
//測試sleuth鏈路追蹤
    // ====================> zipkin+sleuth
    @GetMapping("/consumer/payment/zipkin")
    public String paymentZipkin() {
        String result = restTemplate.getForObject("http://localhost:8001"+"/payment/zipkin/", String.class);
        return result;
    }

測試

依次啟動eureka7001/8001/8080呼叫8001幾次測試下
開啟瀏覽器訪問 http://localhost:9411 會出現以下介面



附件列表