1. 程式人生 > >springCloud(F版)(5)——Sleuth服務鏈路追蹤zipkin元件

springCloud(F版)(5)——Sleuth服務鏈路追蹤zipkin元件

SpringCloud提供了Sleuth框架用於服務追蹤,集成了zipkin元件。zipkin-server有現成的jar包直接啟動就好,當然你也可以自己建立一個豐富他的功能。客戶端也及其簡單,只要pom.xml引入依賴,配置檔案指定zipkin-server的url就行了。

前面博文我們建立了一個springCloud系統的結構,從balance頂層負載均衡到zuul叢集路由閘道器到service生產者服務叢集的呼叫過程。實際測試時,我將來這些專案都作為zipkin的client指向zipkin-server。不過呢。。。發現以下問題。

1.zipken的client並不是每次介面呼叫都會跟zip-server互動,預設是10%,需要有大量呼叫集中發生才會在server端看到效果。

2.zipkin-server只是識別了服務叢集間的呼叫,並不是追蹤每一個介面呼叫時的實際ip、port、method

下面我們具體看一下如何使用zipkin實現服務追蹤。主要包括:修改所有的程式使他們成為zipkin的client,下載並實際部署一個zipkin-server。

zipkin-server的可執行jar包百度網盤備份:連結:https://pan.baidu.com/s/1y5-kgZHoaiT8TUcoVjt1YA 密碼:fxhd

整個測試工程百度網盤備份:連結:https://pan.baidu.com/s/1J2IX5cnfuu4cwuIcJGVdaA 密碼:h0tn

一、修改原來的所有程式

以balance為例,其他的專案修改方式一模一樣,首先在pom.xml中新增zipkin客戶端依賴spring-cloud-starter-zipkin。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

懶的化加到父pom.xml裡也行,但是一定記得重新打包所有的工程。

修改balance專案的application.properties配置檔案,新增zipkin-server的url指定

spring.zipkin.base-url=http://localhost:9411
spring.sleuth.sampler.probability=1=1.0

第一行是配置zipkin-server的url,本地測試有效,分散式釋出的化只能外接配置檔案或者在寫啟動指令碼的時候java -jar **.jar後面補充引數指令 --spring.zipkin.base-url=http://localhost:9411,localhost換成zipkin-server的固定ip。

第二行是配置zipkin-client發生介面呼叫的時候將百分中多少通知zipkin-server,範圍是0.0-1.0,我配置成1.0表示百分之百通知,預設值是0.1表示百分之十的介面呼叫會通知zipkin-server。

二、zipkin-server下載執行

在我的百度網盤裡把可執行jar包下載下來執行就可以,預設埠就是9411,自己可以通過 --server.port=1234去修改埠。

三、執行測試

先啟動zipkin-server。然後編譯執行剛剛改好的其他專案。反覆呼叫介面之後瀏覽器開啟:

http://localhost:9411 就可以看到服務追蹤效果

呼叫越集中的線條越粗,我的系統是1:1的呼叫關係所以線條一樣粗,我們可以調整spring.sleuth.sampler.probability引數的大小讓client向zipkin-server通知的比例發生變化,可以模擬呼叫頻率不同的介面依賴關係,圖形介面的線條粗細會發生變化,點選application節點可以看到呼叫和被呼叫的頻數清單。