什么是Zipkin?
它是一個分布式鏈路跟蹤系統它可以幫助收集時間數據,每個應用程序向Zipkin報告定時數據,Zipkin UI呈現了一個依賴圖表來展示多少跟蹤請求經過了每個應用程序;如果想解決延遲問題,可以過濾或者排序所有的跟蹤請求,並且可以查看每個跟蹤請求占總跟蹤時間的百分比。
什么要使用它?
隨着業務越來越復雜,系統也隨之進行各種拆分,特別是隨着微服務架構和容器技術的興起,看似簡單的一個應用,后台可能有幾十個甚至幾百個服務在支撐;一個前端的請求可能需要多次的服務調用最后才能完成;當請求變慢或者不可用時,我們無法得知是哪個后台服務引起的,這時就需要解決如何快速定位服務故障點,Zipkin分布式跟蹤系統就能很好的解決這樣的問題。
簡單的說zipkin就可以實現,那個服務有問題,服務於服務之間的依賴關系,運行時間等等
繼續上篇說,附鏈接:https://www.cnblogs.com/zgwjava/p/10447542.html
創建zipkin模塊
Gradle
compile 'io.zipkin.java:zipkin-server'
compile 'io.zipkin.java:zipkin-autoconfigure-ui'
yml
server: port: 9999 spring: application: name: zipkin-server
然后再看下啟動類
package org.gw.zipkin.server; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import zipkin.server.EnableZipkinServer; /** * @DATA 2019-02-28 00:17 * @Author 張國偉 WeChat:17630376104 * @Description TODO */ @EnableZipkinServer #次注解為標注zipkin服務端 @SpringBootApplication public class ZipkinServerProvider { public static void main(String[] args) { SpringApplication.run(ZipkinServerProvider.class, args); } }
我們運行項目 http://localhost:9999/zipkin/
可以看到zipkin服務端已經啟動,在這上面可以查看服務間調用記錄,要想實現鏈路追蹤必須服務之間有依賴關系也就是調用關系,有RestTemplate在上一章我們已經說過服務間如何調用。
我們再來看下客戶端如何配置
#eureka客戶端 server: port: 10001 spring: application: name: project-shopping-mall thymeleaf: prefix: classpath:/templates/ cache: false zipkin: base-url: http://localhost:9999/ sleuth: sampler: percentage: 1.0 #0.1-1.0鏈路跟蹤的數據上傳的概率,百分比 eureka: client: service-url: defaultZone: http://localhost:8888/eureka/ instance: prefer-ip-address: true logging: path: /Users/mac/logs/shop level: org.gw.shopping.mai: info
我在controller這里加上了日志
我們看下控制台,為了測試我刷新了好幾次,調用了好幾次
可以看到有兩個id,和一個true,true為是否想zikpin上傳數據,接下來我們看下zipkin服務端
可以看到剛剛服務之間的調用信息,我們點擊某一個
可以清晰的看到服務的信息,相應時間,當然也可以通過控制台的信息來查找服務調用信息,我們再來看下依賴
清晰的看到那個服務調用了那個服務。
並發量大的時候普通的日志處理不了這么多信息,如何出異常了很難判斷到底是那個服務,那一邊出了問題,所以zipkin鏈路解決這個問題,任何問題清晰可見。
最后再看下服務客戶端gradle添加的依賴,上面忘說了
compile 'org.springframework.cloud:spring-cloud-starter-sleuth' compile 'org.springframework.cloud:spring-cloud-sleuth-zipkin'
客戶端必須添加這兩個依賴
下一章健康檢查,感謝支持!!!