分佈式設計模式-分佈式跟蹤

分佈式跟蹤工具

公司 選項 是否開源 優缺點
淘寶 EagleEye 主要基於內部HSF實現,HSF沒有開源,故鷹眼也沒有開源
Twitter Zipkin 基於Http實現,支持語言較多
點評 CAT 自定義改造難度大,代碼比較複雜,侵入代碼,須要埋點
京東 Hydra 主要基於Dubbo實現,不適合Http請求
開源 Pinpoint 方便且容易上手,Http請求
開源 skywalking HTTP 或 gRPC

例子

微服務示例應用程序是使用客戶端服務發現的應用程序的示例。它是用Scala編寫的,使用Spring Boot和Spring Cloud做爲微服務機箱。它們提供各類功能,包括Spring Cloud Sleuth,它爲分佈式跟蹤提供支持。它能夠檢測Spring組件以收集跟蹤信息,並將其傳送到Zipkin服務器,Zipkin服務器收集並顯示跟蹤信息。 如下Spring Cloud Sleuth依賴項配置build.gradle以下:css

dependencies {
  compile "org.springframework.cloud:spring-cloud-sleuth-stream"
  compile "org.springframework.cloud:spring-cloud-starter-sleuth"
  compile "org.springframework.cloud:spring-cloud-stream-binder-rabbit"
複製代碼

RabbitMQ用於向Zipkin提供痕跡。java

使用如下各類設置的各類Spring Cloud Sleuth相關環境變量部署服務docker-compose.yml:spring

environment:
  SPRING_RABBITMQ_HOST: rabbitmq
  SPRING_SLEUTH_ENABLED: "true"
  SPRING_SLEUTH_SAMPLER_PERCENTAGE: 1
  SPRING_SLEUTH_WEB_SKIPPATTERN: "/api-docs.*|/autoconfig|/configprops|/dump|/health|/info|/metrics.*|/mappings|/trace|/swagger.*|.*\\.png|.*\\.css|.*\\.js|/favicon.ico|/hystrix.stream"
複製代碼

此屬性啓用Spring Cloud Sleuth並將其配置爲對全部請求進行採樣。它還告訴Spring Cloud Sleuth經過在主機上運行的RabbitMQ向Zipkin提供跟蹤rabbitmq。docker

Zipkin服務器是一個簡單的Spring Boot應用程序:api

@SpringBootApplication
@EnableZipkinStreamServer
public class ZipkinServer {

  public static void main(String[] args) {
    SpringApplication.run(ZipkinServer.class, args);
  }

}
複製代碼

它使用Docker部署:bash

zipkin:
  image: java:openjdk-8u91-jdk
  working_dir: /app
  volumes:
    - ./zipkin-server/build/libs:/app
  command: java -jar /app/zipkin-server.jar --server.port=9411
  links:
    - rabbitmq
  ports:
    - "9411:9411"
  environment:
    RABBIT_HOST: rabbitmq

複製代碼
相關文章
相關標籤/搜索