https://blog.csdn.net/huangjinjin520/article/details/90114385
隋釗業(yè)務(wù)的發(fā)展惶洲,系統(tǒng)拆分導(dǎo)致系統(tǒng)調(diào)用的鏈路愈發(fā)復(fù)雜燃乍,一個前端請求可能最終需要調(diào)用很多次后端服務(wù)才能完成,當(dāng)整個請求變慢護(hù)著不可行時,是無法得知該請求時由某個請求或者某些后端服務(wù)引起的脉课,這時候就需要解決如何快速定位服務(wù)故障點挂滓,對癥下藥馒索,于是就有了。分布式系統(tǒng)調(diào)用跟蹤的誕生红碑,現(xiàn)今業(yè)界分布式服務(wù)跟蹤的理論基礎(chǔ)源于GOOgle 的一篇論文<<Dapper, a Large-Scale Distributed Systems Tracing Infrastructure>>, 使用最廣泛的開源實現(xiàn)時 Twitter 的 ZipKin舞吭。
ZipKin是一個開放源代碼分布式的跟蹤系統(tǒng),它提供了在分布式環(huán)境下發(fā)送接收析珊,存儲和可視化跟蹤的機(jī)制這使得我們能夠?qū)Ψ?wù)之間的活動進(jìn)行關(guān)聯(lián)羡鸥,并更清楚的了解我們服務(wù)中發(fā)生的情況。
ZIpKin由Twitter公司開源忠寻,致力于收集服務(wù)的定時數(shù)據(jù)惧浴,以解決微服務(wù)架構(gòu)中的延遲問題,奕剃,包括數(shù)據(jù)的收集衷旅,捐腿,存儲,查找和展現(xiàn)柿顶。每個服務(wù)向zipkin報告計時數(shù)據(jù)茄袖,Zipkin會根據(jù)調(diào)用關(guān)系通過Zipkin UI生成依賴關(guān)系圖,顯示多少跟蹤請求通過每個服務(wù)嘁锯。該系統(tǒng)讓開發(fā)者可以通過一個Web前端輕松的收集和分析數(shù)據(jù)绞佩,例如每次用戶請求服務(wù)處理的時間等,可以方便的監(jiān)控系統(tǒng)中存在的瓶頸猪钮。zipkin提供了可拆拔數(shù)據(jù)存儲方式:In-Memory,MySql,Cassandra以及Elasticsearch.接下來的測試未方便直接采用In-Memory方式進(jìn)行存儲品山,生產(chǎn)推薦使用Elasticsearch.
搭建Ziokin-server
1,新建項目
zipkin-server, 對應(yīng)的pom.xml 文件如下:
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>spring-cloud</groupId>
<artifactId>zipkin-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>sc-zipkin-server</name>
<url>http://maven.apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
<version>2.11.8</version>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
<version>2.11.8</version>
</dependency>
</dependencies>
</project>
2,新建啟動文件:
package com.taotao.zipkinserver;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import zipkin2.server.internal.EnableZipkinServer;
@EnableEurekaClient
@EnableZipkinServer
@SpringBootApplication
public class ZipkinServerApplication {
public static void main(String[] args) {
SpringApplication.run(ZipkinServerApplication.class, args);
}
}
備注:存在zipkin.server.EnableZipkinServer和zipkin2.server.internal.EnableZipkinServer兩個EnableZipkinServer注解烤低,其中zipkin.server.EnableZipkinServer已經(jīng)被標(biāo)志為過期肘交,我們這里使用zipkin2.server.internal.EnableZipkinServer
3 新建配置文件application.yml
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
server:
port: 9411
spring:
application:
name: zipkin-server
4,分別先啟動注冊中心扑馁,再啟動Zipkin-server
5涯呻,驗證Zipkin 是否啟動成功
訪問: http://127.0.0.1:9411/zipkin/dependency/