成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

SpringCloudSleuth整合Zipkin的方法

本篇內容介紹了“Spring Cloud Sleuth整合Zipkin的方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

成都創(chuàng)新互聯(lián)專注于中大型企業(yè)的成都網站設計、成都做網站和網站改版、網站營銷服務,追求商業(yè)策劃與數(shù)據分析、創(chuàng)意藝術與技術開發(fā)的融合,累計客戶上千,服務滿意度達97%。幫助廣大客戶順利對接上互聯(lián)網浪潮,準確優(yōu)選出符合自己需要的互聯(lián)網運用,我們將一直專注成都品牌網站建設和互聯(lián)網程序開發(fā),在前進的路上,與客戶一起成長!

Sleuth是一個Spring Cloud的分布式跟蹤解決方案。它由以下幾個方面組成

  • Span(跨度):Sleuth的基本工作單元,它由一個64位的id唯一標識。除ID外,span還包含其他數(shù)據,例如描述、時間戳事件、鍵值對的注解(標簽)、span ID,span父ID等。

  • trace(跟蹤):一組span組成的樹狀結構稱為trace.

  • Annotation(標注)

  1. CS(Client Sent客戶端發(fā)送) 客戶端發(fā)起一個請求,該annotation描述了span的開始。

  2. SR(Server Received服務端接收) 服務端獲得請求,并準備處理它。

  3. SS(Server Sent服務器端發(fā)送) 該annotation表明完成請求處理,當響應發(fā)回客戶端時。

  4. CR(Client Received客戶端接收) span結束的標識??蛻舳顺晒邮盏椒斩说较鄳?。

現(xiàn)在我們來具體看一下Sleuth的作用是什么,當我們沒有加Sleuth依賴的時候,假設我們要訪問這樣一個接口

@GetMapping(value = "/users-anon/internal", params = "username")public LoginAppUser findByUsername(String username) {return appUserService.findByUsername(username);}

Spring Cloud Sleuth整合Zipkin的方法

在日志中,我們可以看到是這個樣子的

2019-11-01 00:17:05.402 DEBUG 805 --- [nio-8001-exec-1] c.c.u.d.U.findUserByUsername             : ==>  Preparing: select u.* from app_user u inner join user_credentials c on c.userId = u.id where c.username = ?
2019-11-01 00:17:05.426 DEBUG 805 --- [nio-8001-exec-1] c.c.u.d.U.findUserByUsername             : ==> Parameters: admin(String)
2019-11-01 00:17:05.503 DEBUG 805 --- [nio-8001-exec-1] c.c.u.d.U.findUserByUsername             : <==      Total: 1
2019-11-01 00:17:05.522  INFO 805 --- [nio-8001-exec-1] c.c.u.service.impl.AppUserServiceImpl    : {"createTime":1516179419000,"enabled":true,"headImgUrl":"","id":1,"nickname":"測試1","password":"$2a$10$3uOoX1ps14CxuotogUoDreW8zXJOZB9XeGdrC/xDV36hhaE8Rn9HO","phone":"","province":"廣東","receiveAddress":"廣州天河珠村東橫五路紅噗公寓367","sex":1,"type":"APP","updateTime":1516179421000,"userIdentity":"SERVICEOPERATOR","username":"admin"}
2019-11-01 00:17:05.528 DEBUG 805 --- [nio-8001-exec-1] c.c.u.dao.UserRoleDao.findRolesByUserId  : ==>  Preparing: select r.* from sys_role_user ru inner join sys_role r on r.id = ru.roleId where ru.userId = ?
2019-11-01 00:17:05.529 DEBUG 805 --- [nio-8001-exec-1] c.c.u.dao.UserRoleDao.findRolesByUserId  : ==> Parameters: 1(Long)
2019-11-01 00:17:05.584 DEBUG 805 --- [nio-8001-exec-1] c.c.u.dao.UserRoleDao.findRolesByUserId  : <==      Total: 1
2019-11-01 00:17:05.605 DEBUG 805 --- [nio-8001-exec-1] c.c.u.d.R.findPermissionsByRoleIds       : ==>  Preparing: select p.* from sys_permission p inner join sys_role_permission rp on p.id = rp.permissionId WHERE rp.roleId in ( ? )
2019-11-01 00:17:05.606 DEBUG 805 --- [nio-8001-exec-1] c.c.u.d.R.findPermissionsByRoleIds       : ==> Parameters: 1(Long)
2019-11-01 00:17:06.245 DEBUG 805 --- [nio-8001-exec-1] c.c.u.d.R.findPermissionsByRoleIds       : <==      Total: 31

除了mybatis的sql代碼外,就只能看到類似nio-8001-exec-1這樣的線程名了。現(xiàn)在我們加入依賴

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

重啟服務,我們再來看一下日志

2019-11-01 00:23:01.469 DEBUG [user-center,d406e2f823a1c2a3,d406e2f823a1c2a3,false] 816 --- [nio-8001-exec-1] c.c.u.d.U.findUserByUsername             : ==>  Preparing: select u.* from app_user u inner join user_credentials c on c.userId = u.id where c.username = ?
2019-11-01 00:23:01.487 DEBUG [user-center,d406e2f823a1c2a3,d406e2f823a1c2a3,false] 816 --- [nio-8001-exec-1] c.c.u.d.U.findUserByUsername             : ==> Parameters: admin(String)
2019-11-01 00:23:01.649 DEBUG [user-center,d406e2f823a1c2a3,d406e2f823a1c2a3,false] 816 --- [nio-8001-exec-1] c.c.u.d.U.findUserByUsername             : <==      Total: 1
2019-11-01 00:23:01.671  INFO [user-center,d406e2f823a1c2a3,d406e2f823a1c2a3,false] 816 --- [nio-8001-exec-1] c.c.u.service.impl.AppUserServiceImpl    : {"createTime":1516179419000,"enabled":true,"headImgUrl":"","id":1,"nickname":"測試1","password":"$2a$10$3uOoX1ps14CxuotogUoDreW8zXJOZB9XeGdrC/xDV36hhaE8Rn9HO","phone":"","province":"廣東","receiveAddress":"廣州天河珠村東橫五路紅噗公寓367","sex":1,"type":"APP","updateTime":1516179421000,"userIdentity":"SERVICEOPERATOR","username":"admin"}
2019-11-01 00:23:01.679 DEBUG [user-center,d406e2f823a1c2a3,d406e2f823a1c2a3,false] 816 --- [nio-8001-exec-1] c.c.u.dao.UserRoleDao.findRolesByUserId  : ==>  Preparing: select r.* from sys_role_user ru inner join sys_role r on r.id = ru.roleId where ru.userId = ?
2019-11-01 00:23:01.679 DEBUG [user-center,d406e2f823a1c2a3,d406e2f823a1c2a3,false] 816 --- [nio-8001-exec-1] c.c.u.dao.UserRoleDao.findRolesByUserId  : ==> Parameters: 1(Long)
2019-11-01 00:23:01.834 DEBUG [user-center,d406e2f823a1c2a3,d406e2f823a1c2a3,false] 816 --- [nio-8001-exec-1] c.c.u.dao.UserRoleDao.findRolesByUserId  : <==      Total: 1
2019-11-01 00:23:01.852 DEBUG [user-center,d406e2f823a1c2a3,d406e2f823a1c2a3,false] 816 --- [nio-8001-exec-1] c.c.u.d.R.findPermissionsByRoleIds       : ==>  Preparing: select p.* from sys_permission p inner join sys_role_permission rp on p.id = rp.permissionId WHERE rp.roleId in ( ? )
2019-11-01 00:23:01.852 DEBUG [user-center,d406e2f823a1c2a3,d406e2f823a1c2a3,false] 816 --- [nio-8001-exec-1] c.c.u.d.R.findPermissionsByRoleIds       : ==> Parameters: 1(Long)
2019-11-01 00:23:01.980 DEBUG [user-center,d406e2f823a1c2a3,d406e2f823a1c2a3,false] 816 --- [nio-8001-exec-1] c.c.u.d.R.findPermissionsByRoleIds       : <==      Total: 31

現(xiàn)在我們可以看到類似于user-center,d406e2f823a1c2a3,d406e2f823a1c2a3,false的東西。

  • user-center很好理解,就是我們的項目名稱。

  • 第一個d406e2f823a1c2a3為traceID

  • 第二個d406e2f823a1c2a3為spanID

  • false表示是否將此數(shù)據上傳給zipkin

當然要打印這些日志,我們需要在配置文件中加入如下配置信息

logging:  level:    root: infocom.cloud: debug  file: logs/${spring.application.name}.log

現(xiàn)在我們來看一下zipkin。

  • Zipkin是Twitter開源的分布式跟蹤系統(tǒng),主要用來收集系統(tǒng)的時序數(shù)據,從而跟蹤系統(tǒng)的調用問題。

要使用zipkin我們需要先下載zipkin server,下載方式為

curl -sSL https://zipkin.io/quickstart.sh | bash -sx --

然后啟動它

java -jar zipkin.jar

當然我們也可以使用docker,建議在服務器上使用

docker pull openzipkin/zipkin

 docker run -d --name zipkin -p 9411:9411 openzipkin/zipkin

啟動之后,我們可以訪問zipkin的UI界面http://127.0.0.1:9411/zipkin/

Spring Cloud Sleuth整合Zipkin的方法

在我們的項目中添加依賴

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

這里zipkin的依賴已經包含了sleuth的依賴,所以我們可以去掉了之前sleuth的依賴。

添加配置

spring:
  zipkin:
#。 在服務器上填入服務器的IP    base-url: http://localhost:9411 enabled: truesender:      type: web  sleuth:    sampler:#      抽樣率,默認是0.1(10%),現(xiàn)在取100%,只為測試方便,生產環(huán)境勿設100%      probability: 1.0

現(xiàn)在我們重新啟動項目,進行一次請求訪問,日志為

2019-11-01 01:04:03.187 DEBUG [user-center,d7fa432636d9df52,d7fa432636d9df52,true] 956 --- [nio-8001-exec-1] c.c.u.d.U.findUserByUsername             : ==>  Preparing: select u.* from app_user u inner join user_credentials c on c.userId = u.id where c.username = ?
2019-11-01 01:04:03.203 DEBUG [user-center,d7fa432636d9df52,d7fa432636d9df52,true] 956 --- [nio-8001-exec-1] c.c.u.d.U.findUserByUsername             : ==> Parameters: admin(String)
2019-11-01 01:04:03.276 DEBUG [user-center,d7fa432636d9df52,d7fa432636d9df52,true] 956 --- [nio-8001-exec-1] c.c.u.d.U.findUserByUsername             : <==      Total: 1
2019-11-01 01:04:03.290  INFO [user-center,d7fa432636d9df52,d7fa432636d9df52,true] 956 --- [nio-8001-exec-1] c.c.u.service.impl.AppUserServiceImpl    : {"createTime":1516179419000,"enabled":true,"headImgUrl":"","id":1,"nickname":"測試1","password":"$2a$10$3uOoX1ps14CxuotogUoDreW8zXJOZB9XeGdrC/xDV36hhaE8Rn9HO","phone":"","province":"廣東","receiveAddress":"廣州天河珠村東橫五路紅噗公寓367","sex":1,"type":"APP","updateTime":1516179421000,"userIdentity":"SERVICEOPERATOR","username":"admin"}
2019-11-01 01:04:03.294 DEBUG [user-center,d7fa432636d9df52,d7fa432636d9df52,true] 956 --- [nio-8001-exec-1] c.c.u.dao.UserRoleDao.findRolesByUserId  : ==>  Preparing: select r.* from sys_role_user ru inner join sys_role r on r.id = ru.roleId where ru.userId = ?
2019-11-01 01:04:03.294 DEBUG [user-center,d7fa432636d9df52,d7fa432636d9df52,true] 956 --- [nio-8001-exec-1] c.c.u.dao.UserRoleDao.findRolesByUserId  : ==> Parameters: 1(Long)
2019-11-01 01:04:03.347 DEBUG [user-center,d7fa432636d9df52,d7fa432636d9df52,true] 956 --- [nio-8001-exec-1] c.c.u.dao.UserRoleDao.findRolesByUserId  : <==      Total: 1
2019-11-01 01:04:03.367 DEBUG [user-center,d7fa432636d9df52,d7fa432636d9df52,true] 956 --- [nio-8001-exec-1] c.c.u.d.R.findPermissionsByRoleIds       : ==>  Preparing: select p.* from sys_permission p inner join sys_role_permission rp on p.id = rp.permissionId WHERE rp.roleId in ( ? )
2019-11-01 01:04:03.368 DEBUG [user-center,d7fa432636d9df52,d7fa432636d9df52,true] 956 --- [nio-8001-exec-1] c.c.u.d.R.findPermissionsByRoleIds       : ==> Parameters: 1(Long)
2019-11-01 01:04:03.433 DEBUG [user-center,d7fa432636d9df52,d7fa432636d9df52,true] 956 --- [nio-8001-exec-1] c.c.u.d.R.findPermissionsByRoleIds       : <==      Total: 31

這里我們可以看到所有的user-center,d7fa432636d9df52,d7fa432636d9df52,true都已經為true了,表示全部提交給zipkin了。

我們多刷新訪問幾次,來看一下zipkin的結果記錄

在頁面中點查找,結果如下

Spring Cloud Sleuth整合Zipkin的方法

由于我們這個接口在數(shù)據庫中進行了3次查詢,并且我這里連接的是云端數(shù)據庫,所以時間會比較長一點,但無論如何,這里都會記錄下每次調用的時間,它是按降序排序的,這樣我們就可以很輕松的插看到每次調用的情況,知道調用訪問哪里耗時。我們點擊某一個進去,可以看到

Spring Cloud Sleuth整合Zipkin的方法

再點擊如上的service,可以看到更加詳細的信息

Spring Cloud Sleuth整合Zipkin的方法

這里只有SR,SC的兩條數(shù)據,因為我們是使用瀏覽器訪問的,而瀏覽器并沒有集成zipkin,它不會上報自己的數(shù)據,所以這里沒有CS,CR的數(shù)據。如果我們在多個微服務之間都配置了zipkin,此處就會把所有的SR,SC,CS,CR的數(shù)據都上報上來。

zipkin數(shù)據持久化

一般我們會使用elasticsearch來做zipkin的數(shù)據持久化。

elasticsearch的docker安裝可以參考elasticsearch中文分詞器的安裝和體驗

安裝好elasticsearch后,我們可以用如下命令啟動zipkin服務端

STORAGE_TYPE=elasticsearch ES_HOSTS=192.168.1.219:9200 java -jar zipkin.jar

如果使用docker,啟動方式如下

docker run -d --name zipkin -p 9411:9411 -e STORAGE_TYPE=elasticsearch -e ES_HOSTS=192.168.1.219:9200 openzipkin/zipkin

“Spring Cloud Sleuth整合Zipkin的方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網站,小編將為大家輸出更多高質量的實用文章!

新聞名稱:SpringCloudSleuth整合Zipkin的方法
分享鏈接:http://jinyejixie.com/article30/ijcppo.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供品牌網站制作、網站營銷、外貿建站、網站收錄、標簽優(yōu)化定制開發(fā)

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都做網站
青海省| 舒兰市| 开封市| 宁夏| 西华县| 四川省| 渝北区| 电白县| 邹城市| 会昌县| 东城区| 修武县| 天祝| 宁国市| 镇巴县| 关岭| 曲沃县| 沙坪坝区| 民勤县| 佛教| 遵化市| 乐清市| 昌图县| 乌兰察布市| 皮山县| 和顺县| 普兰店市| 阿拉善左旗| 若尔盖县| 横山县| 开封县| 清水河县| 密山市| 双桥区| 垦利县| 合作市| 晴隆县| 关岭| 沂源县| 泌阳县| 哈巴河县|