1、微服務下的鍊路追蹤講解和它的重要性
一個服務進來後,可能會調用N多個服務,導緻整個時間很慢,但是又不知道到底是哪個服務導緻的變慢,這個時候就會有架構來記錄每個服務的調用的時間,這個架構就是ZipKin(twitter的技術),可以追蹤服務裡的整個調用鍊路;
2、SpringCloud的鍊路追蹤元件Sleuth
Sleuth最主要的功能是做日志埋點,記錄調用時間的日志;
在product提供服務與order下單服務的項目都要加入依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-boot-starter-sleuth</artifactId>
</dependency>
調用接口劶會多出一部分日志:
2019-04-08 21:43:35.255 INFO [order-service,3c5a689300b283a5,5268ead2e429455b,false] 2284 --- [oduct-service-1] c.n.u.concurrent.ShutdownEnabledTimer : Shutdown hook installed for: NFLoadBalancer-PingTimer-product-service
2019-04-08 21:43:35.256 INFO [order-service,3c5a689300b283a5,5268ead2e429455b,false] 2284 --- [oduct-service-1] c.netflix.loadbalancer.BaseLoadBalancer : Client: product-service instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=product-service,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null
2019-04-08 21:43:35.264 INFO [order-service,3c5a689300b283a5,5268ead2e429455b,false] 2284 --- [oduct-service-1] c.n.l.DynamicServerListLoadBalancer : Using serverListUpdater PollingServerListUpdater
2019-04-08 21:43:35.294 INFO [order-service,3c5a689300b283a5,5268ead2e429455b,false] 2284 --- [oduct-service-1] c.n.l.DynamicServerListLoadBalancer
日志說明:
[order-service,3c5a689300b283a5,5268ead2e429455b,false]
一個請求裡,每個服務的Trace ID都一樣,每個服務的Span Id都不一樣
3、可視化鍊路追蹤系統ZipKin的部署
ZipKin官網
1、簡介:
2、使用
在docker控制台輸入如下指令後會自動下載下傳:
docker run -d -p 9411:9411 openzipkin/zipkin
檢視web頁面:
4、ZipKin+Sleuth鍊路追蹤實戰
1、原理介紹
資料預設存在記憶體,也可以手動改為存mysql裡或其他存儲裡;
2、添加依賴
<!--zipkin+sleuth,下邊的依賴包含了sleuth,是以可以将之前的sleuth的依賴注釋掉了-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
3、在orderService配置檔案裡配置zipkin服務位址
4、通路web頁面
此時調用下單接口後,在web頁面看到如下資料:
5、配置采樣百分比
1表明全部服務資訊都進行采集,開發環境可以設定為1,生産環境用預設即可;
6、可以看到每個服務的耗時時間
微服務核心知識分布