淺嘗Spring Cloud Sleuth
點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”
優(yōu)質(zhì)文章,第一時(shí)間送達(dá)
? 作者?|??Ken.W
來(lái)源 |? urlify.cn/Rveyau
66套java從入門到精通實(shí)戰(zhàn)課程分享
Spring Cloud Sleuth提供了分布式追蹤(distributed tracing)的一個(gè)解決方案。其基本思路是在服務(wù)調(diào)用的請(qǐng)求和響應(yīng)中加入ID,標(biāo)明上下游請(qǐng)求的關(guān)系。利用這些信息,可以方便地分析服務(wù)調(diào)用鏈路和服務(wù)間的依賴關(guān)系。
Only Sleuth
在Spring Tool Suite的文件菜單中,點(diǎn)擊新建Spring Starter Project。
在請(qǐng)求處理方法內(nèi)加上一行日志代碼。
import?org.slf4j.Logger;
import?org.slf4j.LoggerFactory;
import?org.springframework.boot.SpringApplication;
import?org.springframework.boot.autoconfigure.SpringBootApplication;
import?org.springframework.web.bind.annotation.RequestMapping;
import?org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public?class?SpringcloudSleuthApplication?{
?private?static?Logger?log?=?LoggerFactory.getLogger(SpringcloudSleuthApplication.class);
?@RequestMapping("/")
?public?String?home()?{
??log.info("Handling?home");
??return?"Hello?World";
?}
?public?static?void?main(String[]?args)?{
??SpringApplication.run(SpringcloudSleuthApplication.class,?args);
?}
}
設(shè)定應(yīng)用程序端口及名稱。
server.port=10001
spring.application.name=sleuth-demo-without-zipkin
啟動(dòng)程序并瀏覽頁(yè)面后,可以看到日志信息里多了點(diǎn)東西。

[sleuth-demo-without-zipkin,6c00dba1679ee164,6c00dba1679ee164,false]
這一串?dāng)?shù)據(jù)里包含四個(gè)部分
appname - 應(yīng)用程序名稱
traceId - 追蹤系統(tǒng)中的唯一標(biāo)識(shí)
spanId - 具體操作的唯一標(biāo)識(shí)
exportable - 是否日志要導(dǎo)出到Zipkin
Sleuth + Zipkin
Zipkin Server
要想把追蹤數(shù)據(jù)發(fā)送到Zipkin上,首先需要建立一個(gè)Zipkin Server應(yīng)用程序,在pom.xml里加上如下依賴:
??
????org.springframework.boot
????spring-boot-starter
??
??
????org.springframework.boot
????spring-boot-starter-test
????test
??
??
????io.zipkin.java
????zipkin-server
????2.11.5
??
??
??
????io.zipkin.java
????zipkin-autoconfigure-ui
????2.11.5
??
然后在啟動(dòng)類加上@EnableZipkinServer標(biāo)記。
import?org.springframework.boot.SpringApplication;
import?org.springframework.boot.autoconfigure.SpringBootApplication;
import?zipkin2.server.internal.EnableZipkinServer;
@EnableZipkinServer
@SpringBootApplication
public?class?SpringcloudZipkinServerApplication?{
?public?static?void?main(String[]?args)?{
??SpringApplication.run(SpringcloudZipkinServerApplication.class,?args);
?}
}
application.properties文件中可修改默認(rèn)端口,server.port=10000。
打開(kāi)相關(guān)頁(yè)面,如下:
Zipkin Client
再新建一個(gè)應(yīng)用程序。
啟動(dòng)程序代碼基本一樣。
import?org.slf4j.Logger;
import?org.slf4j.LoggerFactory;
import?org.springframework.boot.SpringApplication;
import?org.springframework.boot.autoconfigure.SpringBootApplication;
import?org.springframework.web.bind.annotation.RequestMapping;
import?org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public?class?SpringcloudZipkinApplication?{
?private?static?Logger?log?=?LoggerFactory.getLogger(SpringcloudZipkinApplication.class);
?@RequestMapping("/")
?public?String?home()?{
??log.info("Handling?home");
??return?"Hello?World";
?}
?
?public?static?void?main(String[]?args)?{
??SpringApplication.run(SpringcloudZipkinApplication.class,?args);
?}
}
application.properties文件里加上Zipkin Server的地址,同時(shí)為了每次都將數(shù)據(jù)傳入Zipkin,需要把spring.sleuth.sampler.probability的值改為1.0。
server.port=10002
spring.application.name=sleuth-demo-with-zipkin
spring.zipkin.base-url=http://localhost:10000
spring.sleuth.sampler.probability=1.0
啟動(dòng)Zipkin Client后,可以看到Zipkin Server頁(yè)面上多了一條追蹤數(shù)據(jù)。

再次刷新Zipkin Client頁(yè)面,又會(huì)有條新的數(shù)據(jù)。

在看控制臺(tái)的日志記錄,exportable項(xiàng)變成了true,說(shuō)明數(shù)據(jù)已傳入Zipkin。
作者:Ken.W
粉絲福利:Java從入門到入土學(xué)習(xí)路線圖
???

?長(zhǎng)按上方微信二維碼?2 秒
感謝點(diǎn)贊支持下哈?
