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)