八、Sleuth

一、簡介

Spring Cloud Sleuth 主要功能就是在分佈式系統中提供追蹤解決方案,並且兼容支持了 zipkin,爲微服務提供鏈路跟蹤的機制,可以監控微服務之間的調用。

 

二、搭建zipkin服務監控端

zikpin服務jar包下載地址_____https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/

# 下載jar包,執行命令運行即可
java -jar zipkin-server-2.12.9-exec.jar

啓動成功之後,即可訪問zikpin客戶端地址____http://127.0.0.1:9411

 

三、搭建zipkin的服務提供端

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>mo-cloud</artifactId>
        <groupId>com.mo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>zipkin-hello</artifactId>
    <description>zipkin的服務提供者</description>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!-- eureka服務提供者的依賴 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <!-- feign依賴 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <!-- 鏈路追蹤的依賴 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
    </dependencies>
</project>
server:
  # springboot設置隨機端口號
  port: 0
eureka:
  client:
    service-url:
      default-zone: http://127.0.0.1:8761/eureka/
  instance:
    # 重寫服務的唯一Id,防止多實例對被註冊成一個服務
    instance-id: ${spring.application.name}:${random.int}
    # 設置優先使用ip進行註冊
    prefer-ip-address: true
spring:
  application:
    name: zipkin-hello
  # 配置鏈路追蹤服務端的地址
  zipkin:
    base-url: http://127.0.0.1:9411
feign:
  hystrix:
    enabled: true
package com.mo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * zipkin 服務提供者,區別如下
 * 1. 添加鏈路追蹤的依賴  spring-cloud-starter-zipkin
 * 2. 配置文件配置鏈路追蹤服務端的地址
 * 即可完成服務的提供,並且支持zipkin服務監控端進行監控
 *
 * @author x.pan
 * @email [email protected]
 * @date 2020/4/27 23:50
 */
@RestController
@EnableFeignClients
@SpringBootApplication
@EnableDiscoveryClient
public class ZipkinHelloApplication {
    public static void main(String[] args) {
        SpringApplication.run(ZipkinHelloApplication.class, args);
    }

    /**
     * 對外提供的服務,用於其他服務的消費
     *
     * @return
     */
    @GetMapping("/hello")
    public String hello() {
        return "zipkin,hello";
    }
}

 

四、搭建zipkin的服務消費端

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>mo-cloud</artifactId>
        <groupId>com.mo</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>zipkin-hi</artifactId>
    <description>zipkin鏈路追蹤服務消費端</description>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!-- eureka服務提供者的依賴 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <!-- feign依賴 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <!-- 鏈路追蹤的依賴 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
    </dependencies>
</project>

 

server:
  # springboot設置隨機端口號
  port: 0
eureka:
  client:
    service-url:
      default-zone: http://127.0.0.1:8761/eureka/
  instance:
    # 重寫服務的唯一Id,防止多實例對被註冊成一個服務
    instance-id: ${spring.application.name}:${random.int}
    # 設置優先使用ip進行註冊
    prefer-ip-address: true
spring:
  application:
    name: zipkin-hi
  # 配置鏈路追蹤服務端的地址
  zipkin:
    base-url: http://127.0.0.1:9411
feign:
  hystrix:
    enabled: true
package com.mo.feign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

/**
 * @author x.pan
 * @email [email protected]
 * @date 2020/4/27 23:57
 */
@FeignClient(value = "ZIPKIN-HELLO")
public interface ServiceHelloFeign {

    /**
     * feign調用ZIPKIN-HELLO服務的hello接口
     *
     * @return
     */
    @GetMapping("/hello")
    String hello();
}
package com.mo;

import com.mo.feign.ServiceHelloFeign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * zipkin服務消費端與提供者操作一致
 * 1. 添加鏈路追蹤的依賴  spring-cloud-starter-zipkin
 * 2. 配置文件配置鏈路追蹤服務端的地址
 * 即可完成服務的消費,並且支持zipkin服務監控端進行監控
 *
 * @author x.pan
 * @email [email protected]
 * @date 2020/4/27 23:50
 */
@RestController
@EnableFeignClients
@SpringBootApplication
@EnableDiscoveryClient
public class ZipkinHiApplication {
    public static void main(String[] args) {
        SpringApplication.run(ZipkinHiApplication.class, args);
    }

    @Autowired
    private ServiceHelloFeign serviceHelloFeign;

    /**
     * feign調用遠程服務,進行鏈路追蹤的測試
     *
     * @return
     */
    @GetMapping("/hi")
    public String hi() {
        return serviceHelloFeign.hello();
    }
}

 

五、測試

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章