在專案中使用Zipkin--鏈路追蹤
zipkin簡介
zipkin基本概念
運行關系圖
左邊部分代表了客戶端分別為:
右邊線框內代表了Zipkin的服務端,其中各組件的功能如下:
在專案中使用Zipkin
zipkin-server端
1.匯入依賴
2. 撰寫組態檔
3.創建引導類
zipkin-client端 client需要有多個,本篇只拿一個進行舉例,
1.引入依賴
2.撰寫組態檔
3.創建引導類
4.寫一個服務之間相互呼叫的介面
啟動工程查看效果
啟動工程打開瀏覽器訪問:http://localhost:9412/
當有服務之間的呼叫時可以看到詳情
zipkin簡介
隨著業務越來越復雜,系統也隨之進行各種拆分,特別是隨著微服務架構和容器技術的興起,看似簡單的應用,后臺可能有幾十個甚至幾百個服務在支撐;一個前端的請求可能需要多次的服務呼叫最后才能完成;當請求變慢或者不可用時,我們無法得知是哪個后臺服務引起的,這時就需要解決如何快速定位服務故障點,Zipkin分布式跟蹤系統就能很好的解決這樣的問題,
zipkin基本概念
1.Span:每個服務的處理跟蹤是一個Span,可以理解為一個基本的作業單元,
2.Trace:一組Span的集合,表示一條呼叫鏈路,舉個例子:當前存在服務A呼叫服務B然后呼叫服務C,這個A->B->C的鏈路就是一條Trace,而每個服務例如B就是一個Span,如果在服務B中另起2個執行緒分別呼叫了D、E,那么D、E就是B的子Span,Trace結構表示對一次請求的跟蹤,一次請求可能由后臺的若干服務負責處理,每個服務的處理是一個Span,Span之間有依賴關系,Trace就是樹結構的Span集合;
3.Transport:收集的Spans必須從被追蹤的服務運輸到Zipkin collector,有三個主要的傳輸方式:HTTP, Kafka和Scribe;
4.Components:有4個組件組成Zipkin:collector,storage,search,web UI
運行關系圖

左邊部分代表了客戶端分別為:
1.InstrumentedClient:使用了Zipkin客戶端工具的服務呼叫方
2.InstrumentedServer:使用了Zipkin客戶端工具的服務提供方
3.Non-InstrumentedServer:未使用Trace工具的服務提供方,當然還可能存在未使用工具的呼叫方
總結:一個呼叫鏈路是貫穿InstrumentedClient->InstrumentedServer的,每經過一個服務都會以Span的形式通過Transport把經過自身的請求上報的Zipkin服務端中
右邊線框內代表了Zipkin的服務端,其中各組件的功能如下:
1.UI:提供web頁面,用來展示Zipkin中的呼叫鏈和系統依賴關系等
2.Collector:對各個客戶端暴露,負責接受呼叫資料,支持HTTP、MQ等
3.Storage:負責與各個存盤適配后存盤資料,支持記憶體,MySQL,ES等
4.API:為web界面提供查詢存盤中的資料的介面
在專案中使用Zipkin
zipkin-server端
1.匯入依賴
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--zipkin服務端所需的依賴-->
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
<version>2.12.3</version>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
<version>2.12.3</version>
</dependency>
</dependencies>
2. 撰寫組態檔
server:
port: 9412
#zipkin啟動報錯無法訪問的解決方法
management:
metrics:
web:
server:
auto-time-requests: false
3.創建引導類
/**
* @Author: Promsing(張有博)
* @Date: 2021/7/23 - 10:33
* @Description: Zipkin的服務端
* @version: 1.0
*/
@SpringBootApplication
@EnableZipkinServer //zipkin的注解
public class ZipkinApplication {
public static void main(String[] args) {
SpringApplication.run(ZipkinApplication.class,args);
}
}
zipkin-client端 -- client需要有多個,本篇只拿一個進行舉例,
1.引入依賴
<!--Zipkin的依賴-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
2.撰寫組態檔
spring:
cloud:
application:
name: video
zipkin:
base-url: http://localhost:9412
3.創建引導類
@SpringBootApplication
public class VideoApplication {
public static void main(String[] args) {
SpringApplication.run(VideoApplication.class,args);
}
}
4.寫一個服務之間相互呼叫的介面
使用到openFeign--只是示例,沒有業務代碼
@ApiOperation(value = "feign測驗")
@GetMapping("/queryFeign")
public Result queryFeign(){
System.out.println("screen通過Feign調取project成功");
return Result.build(Result.SUCCESS,"查詢成功");
}
其他的zipkin-client端 ,可按照以上四步去做
啟動工程查看效果
啟動工程打開瀏覽器訪問:http://localhost:9412/

當有服務之間的呼叫時可以看到詳情

如果本篇博客對您有一定的幫助,大家記得留言+點贊哦,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/291527.html
標籤:其他
下一篇:C++面試題(大廠)
