您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Spring Cloud中Sleuth如何整合Zipkin,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Zipkin是一個分布式的跟蹤系統(tǒng),主要用于收集、管理微服務(wù)所產(chǎn)生的數(shù)據(jù)。Zipkin的設(shè)計基于Google Dapper。在實際應(yīng)用時,我們需要讓各個微服務(wù),向Zipkin服務(wù)器報告過程數(shù)據(jù)。對于Spring Cloud來說,已經(jīng)提供了幾個模塊來實現(xiàn)數(shù)據(jù)報告功能,我們僅需要加入依賴,以及做簡單配置,即可實現(xiàn)向Zipkin“寫入”數(shù)據(jù)。
Zipkin在得到這些數(shù)據(jù)后,提供了數(shù)據(jù)查詢、分析的功能,這些圖形化的功能,可以讓我們對微服務(wù)的調(diào)用過程、處理時間、依賴關(guān)系等數(shù)據(jù)一目了然。
啟動Zipkin服務(wù)器,可以選擇使用jar包的方式,也可以往Maven項目中嵌入Zipkin服務(wù)器。
使用jar包啟動,需要先下載Zipkin的啟動jar包,讀者可以到Zipkin的官方網(wǎng)站下載,地址為:http://zipkin.io/,也可以直接到本書的soft目錄中下載zipkin-server-1.31.1-exec.jar。得到j(luò)ar包后,使用“java -jar”命令啟動Zipkin服務(wù)器,成功啟動后,默認(rèn)占用9411端口。
我們也可以在Maven項目中嵌入Zipkin服務(wù)器,為了簡單起見,直接結(jié)合Sping Boot來構(gòu)建Zipkin服務(wù)器。新建zk-server項目(代碼目錄為codes\10\zk-server),項目所使用的依賴請見代碼清單10-1。
代碼清單10-1:codes\10\zk-server\pom.xml
<dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-server</artifactId> </dependency> <dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-autoconfigure-ui</artifactId> <scope>runtime</scope> </dependency>
在application.xml中,將啟動端口配置為9411,代碼清單10-2為啟動類。
代碼清單10-2:codes\10\zk-server\src\main\java\org\crazyit\cloud\ZkServerApp.java
@SpringBootApplication @EnableZipkinServer public class ZkServerApp { public static void main(String[] args) { SpringApplication.run(ZkServerApp.class, args); } }
為啟動類加上@EnableZipkinServer注解,運行啟動類,訪問:http://localhost:9411,可以看到Zipkin的主界面,如圖10-3所示。
圖10-3 Zipkin主界面
接下來,需要配置各個微服務(wù),讓它們往Zipkin服務(wù)器寫入數(shù)據(jù)。本章案例主要有3個微服務(wù)模塊:圖書、支付、銷售。幾個模塊提供了以下服務(wù):
圖書模塊(test-book-service):提供了圖書查詢服務(wù),地址為“/book/{bookId}”,返回一個Book對象。
支付模塊(test-pay-service):提供支付服務(wù),地址為“/pay”,沒有返回,僅做簡單的控制臺輸出。
銷售模塊(test-sale-service):提供銷售服務(wù),地址為“/sale/{bookId}”,會調(diào)用圖書模塊和支付模塊的接口,銷售服務(wù)的實現(xiàn),請見代碼清單10-3。
代碼清單10-3:
codes\10\test-sale-service\src\main\java\org\crazyit\cloud\SaleApplication.java
@RequestMapping(method = RequestMethod.GET, value = "/sale/{bookId}") public String sale(@PathVariable("bookId") Integer bookId) { System.out.println("銷售模塊處理銷售"); // 查找書本 Book book = bookService.getBook(bookId); // 進行支付 payService.doPay(new BigDecimal(10)); return "銷售成功,書名: " + book.getName() + ", 作者:" + book.getAuthor(); }
銷售模塊調(diào)用圖書、支付模塊接口,使用的是Feign框架,該框架的使用,讀者可參考本書的相關(guān)章節(jié),在此不再贅述。
實現(xiàn)了微服務(wù)后,加3個模塊加入以下依賴:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-sleuth-zipkin</artifactId> </dependency>
接下來,還要為各個模塊配置Zipkin服務(wù)器,application.yml的配置如下:
spring: zipkin: base-url: http://localhost:9411 sleuth: sampler: percentage: 1.0
在application.yml中,使用spirng.zipkin.base-url來配置Zipkin的服務(wù)器,使用spring.zipkin.sleuth.sampler.percentage來配置跨度數(shù)據(jù)的采樣百份比,默認(rèn)值為0.1,也就是會向Zipkin發(fā)送約10%的跨度數(shù)據(jù)。本例中為了查看效果,直接配置為1,也就是全部的跨度數(shù)據(jù)都會被發(fā)送到Zipkin。在生產(chǎn)環(huán)境中,建議還是按照具體的需求進行抽樣,以免增加服務(wù)器的負(fù)載。
為了能在各個微服務(wù)的控制臺中看到Sleuth的輸出,還需要為3個微服務(wù)配置日志級別,在application.yml中加入以下配置:
logging: level: root: INFO org.springframework.cloud.sleuth: DEBUG
關(guān)于“Spring Cloud中Sleuth如何整合Zipkin”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。