SpringCloud分布式鏈路追蹤組件Sleuth配置詳解
一.概述
在微服務框架中,一個由客戶端發(fā)起的請求在后端系統(tǒng)中會經(jīng)過多個不同的的服務節(jié)點調用來協(xié)同產(chǎn)生最后的請求結果,每一個前段請求都會形成一條復雜的分布式服務調用鏈路,鏈路中的任何一環(huán)出現(xiàn)高延時或錯誤都會引起整個請求最后的失敗。

spring-cloud-sleuth 是什么?
github地址:https://github.com/spring-cloud/spring-cloud-sleuth
Spring Cloud Sleuth提供了一套完整的服務跟蹤的解決方案,在分布式系統(tǒng)中提供追蹤解決方案并且兼容支持了zipkin
二.zipkin搭建
Zipkin是 Twitter 的一個開源項目,基于 Google Dapper實現(xiàn)。可以使用它來收集各個服務器上請求鏈路的跟蹤數(shù)據(jù),并通過它提供的 REST API 接口來輔助我們查詢跟蹤數(shù)據(jù)以實現(xiàn)對分布式系統(tǒng)的監(jiān)控程序,從而及時地發(fā)現(xiàn)系統(tǒng)中出現(xiàn)的延遲升高問題并找出系統(tǒng)性能瓶頸的根源。除了面向開發(fā)的API接口之外,它也提供了方便的 UI 組件幫助我們直觀的搜索跟蹤信息和分析請求鏈路明細,比如:可以查詢某段時間內各用戶請求的處理時間等。
SpringCloud從F版起已不需要自己構建Zipkin Server了,只需調用jar包即可
zipkin-server-2.12.9-exec.jar
運行:
java -jar zipkin-server-2.12.9-exec.jar

訪問地址:http://localhost:9411/zipkin/
術語:
完整的調用鏈路
表示一請求鏈路,一條鏈路通過Trace Id唯一標識,Span標識發(fā)起的請求信息,各span通過parent id 關聯(lián)起來

—條鏈路通過Trace ld唯一標識,Span標識發(fā)起的請求信息,各span通過parent id關聯(lián)起來。


名詞解釋:
- Trace:類似于樹結構的Span集合,表示一條調用鏈路,存在唯一標識
- span:表示調用鏈路來源,通俗的理解span就是一次請求信息
三.Sleuth鏈路監(jiān)控實現(xiàn)
1. payment8001生產(chǎn)者修改
添加依賴:
<!-- 包含了 sleuth 和 zipkin -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>application.yml
spring:
application:
name: cloud-payment-service
zipkin:
base-url: http://localhost:9411
sleuth:
sampler:
# 采樣率在0 到 1 之間 1則表示全部采樣
probability: 1s
新增controller方法:
@GetMapping("/payment/zipkin")
public String paymentZipkin()
{
return "hi ,i'am paymentzipkin server fall back,welcome to atguigu,O(∩_∩)O哈哈~";
} 2. Consumer80消費者修改
添加依賴:
<!--包含了sleuth+zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>application.yml
spring:
application:
name: cloud-order-server
zipkin:
base-url: http://localhost:9411
sleuth:
sampler:
probability: 1 # 表示全部采樣
Controller新增方法
// ====================> zipkin+sleuth
@GetMapping("/consumer/payment/zipkin")
public String paymentZipkin()
{
String result = restTemplate.getForObject("http://localhost:8001"+"/payment/zipkin/", String.class);
return result;
}
3. 測試
啟動注冊中心7001
啟動生產(chǎn)者8001
啟動消費者80
多訪問幾次 http://localhost/consumer/payment/zipkin
查看 zipkin控制臺:http://localhost:9411

查看依賴關系:



到此這篇關于SpringCloud分布式鏈路追蹤組件Sleuth配置詳解的文章就介紹到這了,更多相關SpringCloud組件Sleuth內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
springboot+jersey+tomcat實現(xiàn)跨域方式上傳文件到服務器的方式
這篇文章主要介紹了springboot+jersey+tomcat實現(xiàn)跨域方式上傳文件到服務器,本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
Spring中的NamespaceHandler與BeanDefinitionParser詳解
這篇文章主要介紹了Spring中的NamespaceHandler與BeanDefinitionParser詳解,由Spring啟動過程之obtainFreshBeanFactory() ,可以看到NamespaceHandler、BeanDefinitionParser為解析配置文件中的Element起重要作用,那么它本身是如何被加載的呢,需要的朋友可以參考下2023-12-12
Spring Boot使用GridFS實現(xiàn)文件的上傳和下載方式
這篇文章主要介紹了Spring Boot使用GridFS實現(xiàn)文件的上傳和下載方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
解決Request.getParameter獲取不到特殊字符bug問題
這篇文章主要介紹了解決Request.getParameter獲取不到特殊字符bug問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07

