SpringCloudAlibaba整合Sleuth
上一篇有寫過Sleuth概述,Spring Cloud Alibaba(13)---Sleuth概述
這篇我們開始通過示例來演示鏈路追蹤。
一、環境準備
既然是演示鏈路追蹤,那麼就需要有多個微服務之間進行呼叫,這裡的專案也是在之間已經搭建好的基礎上加上Sleuth元件,具體鏈路是這個的:
從圖中可以看出,這裡一個完整的鏈路是 一個請求通過閘道器服務
,然後轉發到 訂單微服務
,然後訂單微服務中會去調商品服務
。
所以這裡涉及三個微服務
mall-gateway: 閘道器服務。埠號:8001。
mall-goods: 商品服務。 埠號:6001。
mall-order: 訂單服務。埠號:7001。
這三個服務都已經註冊到nacos中,如圖
二、SpringCloudAlibaba整合Sleuth
注意
這裡不把所有程式碼都複製在這裡,完整專案程式碼,會放到github上,在文章下方會提供地址。
1、pom.xml
在需要進行鏈路追蹤的專案中(服務閘道器、商品服務、訂單服務)新增 spring-cloud-starter-sleuth 依賴。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
2、測試
訪問地址如下:
#通過閘道器訪問訂單服務
http://localhost:8001/mall-order/api/v1/goods_order/getGoodsByFeign?goodsId=1
接下來我們來看各個微服務列印的日誌
閘道器服務(mall-gatway)
2021-05-19 19:17:46.677 INFO [mall-gateway,4ef9402f9a9500a1,4ef9402f9a9500a1,true] 92553 --- [ctor-http-nio-3] com.jincou.getway.CustomGatewayFilter
訂單服務(mall-order)
2021-05-19 19:17:47.284 INFO [mall-order,4ef9402f9a9500a1,94a660c5c94cffb4,true] 92561 --- [nio-7001-exec-1] c.j.order.controller.OrderController
商品服務(mall-goods)
2021-05-19 19:17:49.077 INFO [mall-goods,4ef9402f9a9500a1,4c48de8ab2b6377a,true] 92566 --- [nio-6001-exec-1] c.j.goods.controller.GoodsController
解釋下含義 [mall-gateway,4ef9402f9a9500a1,4ef9402f9a9500a1,true]
第⼀個值,spring.application.name的值。
第⼆個值,4ef9402f9a9500a1 ,sleuth⽣成的⼀個ID,叫Trace ID,⽤來標識⼀條請求鏈路,⼀條請求鏈路中包含⼀個Trace ID,多個Span ID。
第三個值,4ef9402f9a9500a1、spanId 基本的⼯作單元,獲取後設資料,如傳送⼀個http。
第四個值:true,是否要將該資訊輸出到zipkin服務中來收集和展示。
我們可以看出這三個微服務的TraceID是一樣的,都為4ef9402f9a9500a1。代表是一個請求鏈路,但是4c48de8ab2b6377a是不一樣的,每個請求都是自己的SpanID
總結
檢視日誌檔案並不是一個很好的方法,當微服務越來越多日誌檔案也會越來越多,查詢工作會變得越來越麻煩,下一篇我們通過 Zipkin 進行鏈路跟蹤。Zipkin 可以將日誌聚合,並進行視覺化展示和全文檢索。
github地址
nacos-feign-sentinel-gatway-sleuth
少說多做,句句都會得到別人的重視;多說少做,句句都會受到別人的忽視。(14)