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節點可以看到呼叫和被呼叫的頻數清單。