日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Spring Cloud 專題之Sleuth 服務跟蹤實現方法

瀏覽:27日期:2023-12-03 16:50:01
目錄準備工作實現跟蹤抽樣收集整合Zipkin1.下載Zipkin2.引入依賴配置3.測試與分析持久化到mysql1.創建zipkin數據庫2.啟動zipkin3.測試與分析

在一個微服務架構中,系統的規模往往會比較大,各微服務之間的調用關系也錯綜復雜。通常一個有客戶端發起的請求在后端系統中會經過多個不同的微服務調用阿里協同產生最后的請求結果。在復雜的微服務架構中,幾乎每一個前端請求都會形成一條復雜的分布式的服務調用鏈路,在每條鏈路中任何一個依賴服務出現延遲過高或錯誤的時候都有可能引起請求最后的失敗。

這個時候,對于每個請求,全鏈路調用的跟蹤就邊得越來越重要,通過實現對請求調用的跟蹤可以幫助我們快速發現問題根源以及監控分析每條請求鏈路上的性能瓶頸等。而Spring Cloud Sleuth就是一個提供了一套完整的解決方案的組件。

在開始今天的這個例子之前,可以看一下我之前的幾篇博客,特別是hystrix之前的博客。本篇博客就是在這基礎上所增加的新功能。在之前的實踐中,通過9004的customer-server項目調用9003的hello-server項目的接口。

準備工作

在之前的服務調用的方法上加上日志操作。

customer-server的CustomerController類:

@RequestMapping('/sayHello1')@ResponseBodypublic String invokeSayHello1(String name){ logger.info('調用了customer-server的sayHello1方法,參數為:{}',name); return serivce.invokeSayHello1(name);}

hello-server的Hello1Controller類:

@RequestMapping('/sayHello1')public String sayHello1(@RequestParam('name') String name){ logger.info('你好,服務名:{},端口為:{},接收到的參數為:{}',instanceName,host,name); try {int sleepTime = new Random().nextInt(3000); logger.error('讓線程阻塞 {} 毫秒',sleepTime);Thread.sleep(sleepTime); } catch (InterruptedException e) {e.printStackTrace(); } return '你好,服務名:'+instanceName+',端口為:'+host+',接收到的參數為:'+name;}

在頁面上訪問localhost:9004/sayHello1?name=charon

# customer-server中的打印日志2021-08-09 23:22:33.905 INFO 19776 --- [nio-9004-exec-8] c.c.e.controller.CustomerController : 調用了customer-server的sayHello1方法,參數為:charon# hello-server中的打印日志2021-08-09 23:22:33.917 INFO 2884 --- [nio-9003-exec-9] c.c.e.controller.Hello1Controller: 你好,服務名:hello-server,端口為:9003,接收到的參數為:charon實現跟蹤

在修改完上面的代碼后,為customer-server項目和hello-server項目添加服務跟蹤的功能,引入依賴

<!--引入sleuth鏈路追蹤的jar包--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId></dependency>

頁面調用查看日志:

# customer-server中的打印日志2021-08-09 23:30:44.782 INFO [customer-server,0e307552774ef605,0e307552774ef605,true] 14616 --- [nio-9004-exec-2] c.c.e.controller.CustomerController : 調用了customer-server的sayHello1方法,參數為:charon# hello-server中的打印日志2021-08-09 23:30:44.807 INFO [hello-server,0e307552774ef605,4cf4d9dd57ca7478,true] 6660 --- [nio-9003-exec-2] c.c.e.controller.Hello1Controller: 你好,服務名:hello-server,端口為:9003,接收到的參數為:charon

從上面的控制臺的輸出內容可以看到形如[customer-server,0e307552774ef605,0e307552774ef605,true] 的日志信息,而浙西而元素正是實現分布式服務跟蹤的重要組成部分,每個值的含義如下:

customer-server:應用的名稱,也就是application.properties中的soring。application.name的值 0e307552774ef605:Spring Cloud Sleuth生成的一個ID,成微Trace ID,它用來標識一條請求鏈路,一條請求鏈路中包含一個Trace ID,多個Span ID。 0e307552774ef605:Spring Cloud Sleuth生成的另一個ID,成為Span ID,它表識一個基本的工作單元,比如發慫一個HTTP請求 true:表示是否要將改信息輸出到Zipkin等服務中來收集和展示

在一個服務請求鏈路的調用過程中,會包吃并傳遞同一個Trace ID,從而將整個分布于不容微服務進程中的請求跟蹤信息串聯起來。以上面輸出內容為例,customer-server和hello-server同屬于一個前端服務請求來源,所以他們的Trace ID是相同的,處于同一個請求鏈路中。通過Trace ID,我們就能將所有請求過程的日志關聯起來。

在Spring Boot應用中,通過引入spring-cloud-starter-sleuth依賴之后,他會自動為當前應用構建起通道跟蹤機制,比如:

通過RabbitMQ,Kafka等中間件傳遞的請求 通過Zuul代理傳遞的請求 通過RestTemplate發起的請求。抽樣收集

通過TraceID和SpanID已經實現了對分布式系統中的請求跟蹤,而記錄的跟蹤信息最終會被分析系統收集起來,并用來實現對分布式系統的監控和分析功能。

理論上講,收集的跟蹤信息越多就可以越好的反應系統的真實運行情況,并給出更精準的預警和分析,但是在高并發的分布式系統運行時,大兩的請求調用會產生海量的跟蹤日志信息,如果收集過多對整個系統的性能也會造成一定的影響,同時保存大兩的日志信息也需要很大的存儲開銷。所以在Sleuth中菜用了抽樣收集的方式來為跟蹤信息打商收集標記。也就是我們之前在日志信息中看到的第4個布爾類型的值,它代表了改信息是否要改后續的跟蹤信息收集器獲取或存儲。

默認情況下,Sleuth會使用 zipkin brave的ProbabilityBasedSampler的抽樣策略(現在已經不推薦使用),即以請求百分比的方式配置和收集跟蹤信息,我們可以在配置文件中配置參數對其百分比值進行設置(它的默認值為 0.1,代表收集 10% 的請求跟蹤信息)。

spring.sleuth.sampler.probability=0.5

而如果在配置文件中配置了 spring.sleuth.sampler.rate 的屬性值,那么便會使用zipkin Brave自帶的RateLimitingSampler的抽樣策略。不同于ProbabilityBasedSampler菜用概況收集的策略,RateLimitingSampler是菜用的限速收集,也就是說它可以用來限制每秒跟蹤請求的最大數量。

如果同時設置了 spring.sleuth.sampler.rate 和 spring.sleuth.sampler.probability 屬性值,也仍然使用 RateLimitingSampler 抽樣策略(即 spring.sleuth.sampler.probability 屬性值無效) RateLimitingSampler 策略每秒間隔接受的 trace 量設置范圍:最小數字為 0,最大值為 2,147,483,647(最大 int)整合Zipkin

Zipkin是twitter的一個開源項目,它基于Google Dapper實現,我們可以用它來實現收集各個服務器上的請求鏈路的跟蹤。并通過它提供的REST API接口來輔助查詢跟蹤數據以實現對分布式系統的監控程序,從而及時發現系統中出現的延遲升高問題并找出系統性能瓶頸的根源。同時,Zipkin還提供了方便的UI組件來幫助我們直觀地所搜跟蹤信息和分析請求地鏈路明細,比如可以查詢某段時間內各用戶請求地處理時間等。

Spring Boot 2.x 以后官網不推薦使用源碼方式編譯,推薦使用官網編譯好的jar執行。所以我們不熟Zipkin也使用jar包的方式。

1.下載Zipkin

我這里是到maven倉庫中下載的。

https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec

下載完成后,使用java -jar命令啟動zipkin。

Spring Cloud 專題之Sleuth 服務跟蹤實現方法

2.引入依賴配置

為customer-server和hello-server的項目引入zipkin的包:

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-sleuth-zipkin</artifactId></dependency>

配置文件添加zipkin的地址:

spring.zipkin.base-url=http://localhost:94113.測試與分析

完成所有接入Zipkin的工作后,依次講服務起來,瀏覽器發送請求做測試。

點擊查找按鈕,下方出現服務調用的信息。注意,只有在sleuth的最后一個參數為true的時候,才會講改跟蹤信息輸出給Zipkin Server。

Spring Cloud 專題之Sleuth 服務跟蹤實現方法

單擊其中的某一個,還可以得到Sleuth跟蹤到的詳細信息。其中就包括時間請求時間消耗等。

Spring Cloud 專題之Sleuth 服務跟蹤實現方法

單擊導航欄中的依賴按鈕,還可以查看到Zipkin根據跟蹤信息分析生成的系統關系請求鏈路依賴關系圖。

Spring Cloud 專題之Sleuth 服務跟蹤實現方法

持久化到mysql

在SpringBoot2.0之前的版本,Zipkin-Server端由我們自己創建項目來搭建。可以比較靈活的選擇數據持久化的配置,SpringBoot2.0之后的版本,Zipkin-Server端由官方提供,無需我們自己搭建,那么如何選擇去配置將數據持久化到MySQL呢?

1.創建zipkin數據庫

在下載好的zipkin-serve的jar包中,找到zipkin-server-shared.yml的文件,

Spring Cloud 專題之Sleuth 服務跟蹤實現方法

在里面可以找到關于mysql的持久化配置,可以看到數據庫名稱默認為zipkin,

Spring Cloud 專題之Sleuth 服務跟蹤實現方法

初始化mysql的腳本:https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql-v1/src/main/resources/mysql.sql

創建的數據庫如下:

Spring Cloud 專題之Sleuth 服務跟蹤實現方法

2.啟動zipkin

在啟動zipkin的時候,以命令行的方式啟動,輸入mysql的參數

java -jar zipkin-server-2.12.9-exec.jar --STORAGE_TYPE=mysql --MYSQL_HOST=127.0.0.1 --MYSQL_TCP_PORT=3306 --MYSQL_DB=zipkin --MYSQL_USER=root --MYSQL_PASS=root3.測試與分析

瀏覽器訪問,因為我這次調用服務超時了,觸發了hystrix的斷路器功能,所以這次有8個span。

Spring Cloud 專題之Sleuth 服務跟蹤實現方法

關閉zipkin-server,然后重啟,發現依然能夠查詢到上一次請求的服務鏈路跟蹤數據。查看數據庫表,發現數據都存儲到表里了。

Spring Cloud 專題之Sleuth 服務跟蹤實現方法

參考文章:

翟永超老師的《Spring Cloud微服務實戰》

https://www.hangge.com/blog/cache/detail_2803.html

https://blog.csdn.net/Thinkingcao/article/details/104957540

到此這篇關于Spring Cloud 專題之Sleuth 服務跟蹤的文章就介紹到這了,更多相關Spring Cloud Sleuth 服務跟蹤內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产亚洲人成a在线v网站| 视频一区视频二区中文字幕| 日韩有吗在线观看| 妖精视频成人观看www| 欧美91视频| 尹人成人综合网| 日韩一区二区久久| 视频一区二区三区中文字幕| 蜜桃一区二区三区在线观看| 日韩中文字幕91| 免费在线成人网| 九九久久电影| 久久亚洲国产精品一区二区| 中文字幕av一区二区三区四区| 亚洲精品裸体| 欧美精品国产| 国产精品99一区二区三区| 精品视频高潮| av在线日韩| 婷婷综合网站| 免费视频最近日韩| 日本欧美一区二区| 国产精品www994| 成人一区不卡| 国产综合精品| 色狠狠一区二区三区| 91成人精品在线| 精品一区电影| 国产综合精品一区| 亚洲tv在线| 精品视频自拍| 久久一区二区三区喷水| 亚洲少妇一区| 欧美亚洲福利| av资源中文在线天堂| 黑丝美女一区二区| 亚洲ab电影| 色综合五月天| 日韩亚洲精品在线| 国产精品视频一区二区三区综合| 国产高清不卡| 香蕉成人久久| 国产精品三p一区二区| 日韩中文在线电影| 六月天综合网| 国产精品大片| 欧美a级一区| 日韩欧美中文字幕电影 | 少妇精品导航| 综合国产视频| 国产福利片在线观看| 老鸭窝毛片一区二区三区| 国产日韩欧美中文在线| 九色porny丨国产首页在线| 亚洲专区一区| 国产精品国码视频| 免费黄色成人| 久久精品一区二区三区中文字幕| 韩日一区二区三区| 国产精品久久777777毛茸茸| jiujiure精品视频播放| 国产精品亚洲片在线播放| 欧洲激情综合| 麻豆精品99| 国产亚洲毛片| 精品精品国产三级a∨在线| 亚洲一区二区免费看| 捆绑调教美女网站视频一区 | 欧美日韩黑人| 国产精品最新自拍| 亚洲激情中文| 国产精品探花在线观看| 偷拍欧美精品| 国产一区二区三区四区大秀| 亚洲影院天堂中文av色| 亚洲国产成人二区| 欧美一级全黄| 免费在线欧美视频| 水蜜桃久久夜色精品一区| 亚洲色图国产| 亚洲成人精选| 天堂√8在线中文| 亚洲精品一级二级三级| 国产精品久久久久av电视剧| 日韩欧美久久| 一区福利视频| 日韩久久一区二区三区| 久久99免费视频| 日韩**一区毛片| 国产视频一区免费看| 成人精品亚洲| 国产一区二区三区四区大秀 | 精品91福利视频| 久久精品国产免费| 欧美成人精品一级| 欧美黄色一区| 国产欧美日韩亚洲一区二区三区| 欧美一区成人| 欧美一级网址| 国产精品欧美一区二区三区不卡| 久久精品av麻豆的观看方式| 久久精品99久久久| 国产精品蜜月aⅴ在线| 国产精品久久久久久久久久齐齐| 国产情侣久久| 另类综合日韩欧美亚洲| 精品福利久久久| 婷婷综合六月| 亚洲五月婷婷| 亚洲综合丁香| 亚洲图片久久| 日韩综合一区二区| 日本精品久久| 免费日韩成人| 日韩成人精品一区二区| 青青久久av| 亚洲作爱视频| 日韩中文字幕在线一区| 国产精品网站在线看| 国产在线观看91一区二区三区| 婷婷激情一区| 免费日韩av片| 日韩高清一区在线| 免费在线欧美黄色| 啪啪国产精品| 久热综合在线亚洲精品| 日韩欧美2区| 蜜臀久久99精品久久久画质超高清| 国产精品日韩欧美一区| 亚洲欧美日韩综合国产aⅴ| 中文精品在线| 色综合视频一区二区三区日韩 | 日韩精品dvd| 日韩久久电影| 久久中文字幕二区| 黄色国产精品| 视频一区欧美日韩| 午夜久久av| 欧美激情aⅴ一区二区三区| 精品视频国产| 久久影院一区| 99视频在线精品国自产拍免费观看| 玖玖精品视频| 日韩国产一区| 国产精品久久久久av电视剧| 免费人成在线不卡| 久久精品色播| 亚洲欧美日韩国产一区| 国产精区一区二区| 久久精品官网| 免费看日韩精品| 精品一区二区三区亚洲| 中文一区在线| 精品日韩一区| 六月丁香综合| 高清久久一区| 国产一区二区三区四区五区 | 日韩精品欧美大片| 国产精品永久| 特黄毛片在线观看| 欧美一区=区| 国产精品调教| 亚洲国产专区| 奇米色欧美一区二区三区| 另类综合日韩欧美亚洲| 999精品色在线播放| 日韩精品一二区| 麻豆精品久久| 国产精品av久久久久久麻豆网| 亚洲综合图色| 精品视频一区二区三区在线观看| 狠狠色狠狠色综合日日tαg| 国产情侣一区在线| 国产99久久| 日韩av网站在线免费观看| 国产在线看片免费视频在线观看| 亚洲一卡久久| 精品视频高潮| 蜜臀精品久久久久久蜜臀| 麻豆一区二区99久久久久| japanese国产精品| 国产欧美日韩在线一区二区| 激情丁香综合| 国产欧美日韩在线观看视频| 影视先锋久久| 国产无遮挡裸体免费久久 | 国产成人久久精品一区二区三区| 亚洲国产日韩欧美在线| 国产精品久久久久久久免费软件| 女人av一区| 精品中国亚洲| 亚洲无线观看| 久久亚洲在线| 国产精品高潮呻吟久久久久| 午夜国产精品视频| 国产精品欧美大片| 久久不射网站| 色乱码一区二区三区网站| 亚洲在线久久| 久久青草久久|