公司 | 選項 | 是否開源 | 優缺點 |
---|---|---|---|
淘寶 | EagleEye | 否 | 主要基於內部HSF實現,HSF沒有開源,故鷹眼也沒有開源 |
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
複製代碼