SpringCloud整合分布式服務(wù)跟蹤zipkin的實(shí)現(xiàn)
1、zipkin
zipkin是Twitter的一個(gè)開源項(xiàng)目,它基于Google Dapper實(shí)現(xiàn)。我們可以使用它來收集各個(gè)服務(wù)器上請求鏈路的跟蹤數(shù)據(jù),并通過它提供的REST API接口來輔助我們查詢跟蹤數(shù)據(jù)以實(shí)現(xiàn)對分布式系統(tǒng)的監(jiān)控程序,從而及時(shí)地發(fā)現(xiàn)系統(tǒng)中出現(xiàn)的延遲升高問題并找出系統(tǒng)性能瓶頸的根源。除了面向開發(fā)的API接口之外,它也提供了方便的UI組件來幫助我們直觀的搜索跟蹤信息和分析請求鏈路明細(xì),比如:可以查詢某段時(shí)間內(nèi)各用戶請求的處理時(shí)間等。
zipkin的架構(gòu)圖如下:
由上面的架構(gòu)圖可以看出,zipkin有四個(gè)核心組件:
- Collector:收集器組件,它主要用于處理從外部系統(tǒng)發(fā)送過來的跟蹤信息,將這些信息轉(zhuǎn)換為zipkin內(nèi)部處理的Span格式,以支持后續(xù)的存儲、分析、展示等功能。
- Storage:存儲組件,它主要對處理收集器接收到的跟蹤信息,默認(rèn)會將這些信息存儲在內(nèi)存中,我們也可以修改此存儲策略,通過使用其他存儲組件將跟蹤信息存儲到數(shù)據(jù)庫中,目前支持的數(shù)據(jù)庫有Mysql、Cassandra和Elasticsearch。
- API:API組件,提供給UI組件,展示跟蹤信息。
- UI:UI組件,基于API組件實(shí)現(xiàn)的上層應(yīng)用。通過UI組件用戶可以方便而有直觀地查詢和分析跟蹤信息。
2、構(gòu)建zipkin-server
目前最新版的zipkin-server,是直接到官網(wǎng)獲取最新可執(zhí)行的jar,然后直接運(yùn)行該jar文件,例如:
curl -sSL https://zipkin.io/quickstart.sh | bash -s java -jar zipkin.jar
也可以用docker啟動,在此通過docker來啟動zipkin-server服務(wù)。
由于在此存儲組件使用Elasticsearch,所以先通過docker將Elasticsearch啟動,執(zhí)行如下命令:
docker run -d -p 9200:9200 --name es elasticsearch:6.6.0
如果在啟動elasticsearch的時(shí)候出現(xiàn)如下錯(cuò)誤:
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
可以先執(zhí)行如下命令解決:
sysctl -w vm.max_map_count=262144
接下來,啟動zipkin-server服務(wù),執(zhí)行如下命令:
docker run -d -e STORAGE_TYPE=elasticsearch -e ES_HOSTS=192.168.208.134:9200 -p 9411:9411 --name zipkin openzipkin/zipkin:2.12.1
通過瀏覽器打開http://192.168.208.134:9411頁面,如果出現(xiàn)如下界面,則表示zipkin-server服務(wù)啟動成功了:
3、微服務(wù)集成zipkin
在原來微服務(wù)的pom文件中,添加如下的依賴:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
然后在application.yml文件需要新增如下配置:
spring: zipkin: base-url: http://192.168.208.134:9411 sleuth: sampler: percentage: 1
其中spring.sleuth.sampler.percentage表示收集跟蹤信息的比例,1表示全部收集,它的值的范圍是0-1之間的。
4、部署zipkin-dependencies
由于新版本當(dāng)中,如果需要查看各個(gè)微服務(wù)之間的依賴關(guān)系,則必需要部署zipkin-dependencies,此處還是通過docker來部署,由于zipkin-dependencies運(yùn)行一次就會結(jié)束,所以可以讓其每小時(shí)運(yùn)行一次,即:
docker run -e STORAGE_TYPE=elasticsearch -e ES_HOSTS=192.168.208.134:9200 openzipkin/zipkin-dependencies:2.0.4 sh -c 'crond -f'
5、參考資料
https://github.com/openzipkin/docker-zipkin
https://github.com/openzipkin/docker-zipkin-dependencies
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
springboot創(chuàng)建多module項(xiàng)目的實(shí)例
這篇文章主要介紹了springboot創(chuàng)建多module項(xiàng)目的實(shí)例代碼,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02SpringCloud LoadBalancer自定義負(fù)載均衡器使用解析
LoadBalancerClient 是 SpringCloud 提供的一種負(fù)載均衡客戶端,Ribbon 負(fù)載均衡組件內(nèi)部也是集成了 LoadBalancerClient 來實(shí)現(xiàn)負(fù)載均衡,本文給大家深入解析 LoadBalancerClient 接口源碼,感興趣的朋友跟隨小編一起看看吧2023-04-04最新IntelliJ?IDEA?2022配置?Tomcat?8.5?的詳細(xì)步驟演示
這篇文章主要介紹了IntelliJ?IDEA?2022?詳細(xì)配置?Tomcat?8.5?步驟演示,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08json如何解析混合數(shù)組對象到實(shí)體類的list集合里去
這篇文章主要介紹了json解析混合數(shù)組對象到實(shí)體類的list集合里去的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Mybatis plus中使用in查詢出錯(cuò)如何解決
這篇文章主要介紹了Mybatis plus中使用in查詢出錯(cuò)的問題及解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08詳解SpringBoot中的統(tǒng)一結(jié)果返回與統(tǒng)一異常處理
這篇文章主要將通過詳細(xì)的討論和實(shí)例演示來幫助你更好地理解和應(yīng)用Spring Boot中的統(tǒng)一結(jié)果返回和統(tǒng)一異常處理,感興趣的小伙伴可以了解下2024-03-03