springCloud - 第10篇 - 服務間調用追蹤 (zipkin 的使用)

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

一、?在微服務系統中,不同應用服務可能會有各種不同的相互調用 。

? ? springcloud 集成了 zipkin 來實現對于不同服務調用的追蹤和統計。

二、具體實現 。

1. Docker 方式安裝并運行 zipkin 作為 zipkin 的 server,即服務追蹤的服務端。

1.1 安裝方式及運行見文章:Docker 方式安裝 zipkin (linux 、阿里云ECS上安裝)

運行效果如下圖,此時,并沒有服務調用記錄,zipkin?管控中心?未展示任何追蹤數據:

?1.2 在 base 工程 pom 中加上依賴:spring-boot-starter-web 。

完整依賴如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.base</groupId><artifactId>base-config</artifactId><version>0.0.1-SNAPSHOT</version><name>base-config</name><packaging>pom</packaging><description>整個 springCloud 體系基本 pom 配置</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.6.RELEASE</version><!--lookup parent from repository查找順序:relativePath元素中的地址–本地倉庫–遠程倉庫。設定一個空值將始終從倉庫中獲取,不從本地路徑獲取。--><relativePath/></parent><!-- 配置遠程發布到私服,mvn deploy --><!--<distributionManagement>--><!--&lt;!&ndash;releases:發布&ndash;&gt;--><!--<repository>--><!--<id>maven-releases</id>--><!--<name>Nexus Release Repository</name>--><!--<url>http://ergouzi.fun:8081/repository/maven-releases/</url>--><!--</repository>--><!--&lt;!&ndash;Snapshot:快照&ndash;&gt;--><!--<snapshotRepository>--><!--<id>maven-snapshots</id>--><!--<name>Nexus Snapshot Repository</name>--><!--<url>http://ergouzi.fun:8081/repository/maven-snapshots/</url>--><!--</snapshotRepository>--><!--</distributionManagement>--><!--定義子模塊--><!--<modules>--><!--<module>bbb</module>--><!--<module>aaa</module>--><!--</modules>--><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Finchley.RELEASE</spring-cloud.version></properties><dependencies><!--配置文件管理--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

2. 新建工程 see-name?工程,作為一個 zipkin 客戶端,對外暴露接口:查看姓名。

2.1. file??-- new??--??project?

2.2. spring Initializr - module SDK 選擇自己的 JDK ,其余的可以不用填寫,next。

2.3. 填寫工程相關信息:包名、工程名等,next。

2.4.直接 next?

2.5. 工程名,代碼存放位置等,finish 。

2.6.工程結構:

2.7. 在 pom 中引入 依賴:

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

完整依賴:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com</groupId><artifactId>see-name</artifactId><version>0.0.1-SNAPSHOT</version><name>see-name</name><description>服務:查看姓名</description><parent><groupId>com.base</groupId><artifactId>base-config</artifactId><version>0.0.1-SNAPSHOT</version></parent><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zipkin</artifactId></dependency></dependencies></project>

2.8 在配置文件中配置?zipkin 服務地址 :spring.zipkin.base-url=http://ergouzi.fun:9411

端口設置為 8805 。

# 端口
server.port= 8805# 工程名
spring.application.name=see-name# zipkin 服務地址
spring.zipkin.base-url=http://ergouzi.fun:9411# zipkin 收集信息頻率:默認為0.1
# 1 代表收集所有請求記錄,但會有延遲
# spring.sleuth.sampler.percentage=1
# zipkin.sender.type=WEB

2.9 暴露接口?seeName、并調用 8806 端口的接口 seeAge 。以實現不同服務,相互調用。

完整啟動類:

package com.seename;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@SpringBootApplication
@RestController
public class SeeNameApplication {public static void main(String[] args) {SpringApplication.run(SeeNameApplication.class, args);}@RequestMapping("/seeAge")public String seeAge() throws Exception {return HttpUtil.seeName("http://localhost:8806/seeAge");}@RequestMapping("/seeName")public String seeName() {return "姓名:小熊";}}

2.10 用工具類實現請求發送,HttpUtil 代碼:

package com.seename;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;/*** @author yujiang* @description 發送請求工具類* @date 2019/8/5 18:27*/
public class HttpUtil {public static String seeName(String url) throws Exception {URL restURL = new URL(url);HttpURLConnection conn = (HttpURLConnection) restURL.openConnection();conn.setRequestMethod("GET");conn.setDoOutput(true);conn.setAllowUserInteraction(false);BufferedReader bReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line, resultStr = "";while (null != (line = bReader.readLine())) {resultStr += line;}bReader.close();return resultStr;}}

3. 同樣方法新建工程 see-age?工程,作為一個 zipkin 客戶端,對外暴露接口:查看年齡。

3.1 工程結構:

3.2 同樣加依賴,并配置好 zipkin 服務地址:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com</groupId><artifactId>see-age</artifactId><version>0.0.1-SNAPSHOT</version><name>see-age</name><description>服務:查看年齡</description><parent><groupId>com.base</groupId><artifactId>base-config</artifactId><version>0.0.1-SNAPSHOT</version></parent><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zipkin</artifactId></dependency></dependencies></project>

端口設置為:8806 。?

# 端口
server.port= 8806# 工程名
spring.application.name=see-age# zipkin 服務地址
spring.zipkin.base-url=http://ergouzi.fun:9411

3.3 暴露接口?seeAge、并調用 8805 端口的接口 seeName 。以實現不同服務,相互調用。

package com.seeage;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@SpringBootApplication
@RestController
public class SeeAgeApplication {public static void main(String[] args) {SpringApplication.run(SeeAgeApplication.class, args);}@RequestMapping("/seeName")public String seeName() throws Exception {return HttpUtil.seeName("http://localhost:8805/seeName");}@RequestMapping("/seeAge")public String seeAge() {return "16歲";}
}

4. 瀏覽器分別請求這 4?個接口(一定要先請求接口,zipkin管控中心 才會有追蹤數據)

http://localhost:8805/seeName?、http://localhost:8805/seeAge?、

http://localhost:8806/seeName?、http://localhost:8806/seeAge??

5.查看?zipkin管控中心 追蹤數據。

5.1 點擊 “依賴” 查看到服務間依賴對應:

PS:我不確定 zipkin 的延遲到底為多久,昨天我反復測試,但此頁面依賴關系一直沒有任何記錄,到今天早上依舊無果。一刻鐘前再次刷新,終于有如下圖的記錄了。項目代碼并未作改動 。

5.2 點擊 “查看” ,可以看到接口請求記錄:

可以單獨查看對應接口請求:?

?至此,zipkin 已經正常運行并追蹤到服務間調用。

-------------------------------------------------------------

下一篇:springCloud - 第11篇 - Eureka 注冊中心集群的實現

源碼見:

https://gitee.com/FJ_WoMenDeShiJie/springcloud-base

https://gitee.com/FJ_WoMenDeShiJie/springcloud-seeAge

https://gitee.com/FJ_WoMenDeShiJie/springcloud-seeName

-------------------------------------------------------------

PS:這個系列不定時更新,只是個人的學習分享,

內容全程參考書目:

《Spring Cloud 與 Docker 微服務架構空實戰?》、

《Spring Cloud 微服務實戰》及此書作者博客:http://blog.didispace.com/spring-cloud-learning/

《深入理解 Spring Cloud 與微服務構建》及此書作者博客:https://blog.csdn.net/forezp/article/details/70148833
--------------------------------------------------------------

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447583.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447583.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447583.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

廣東48.6萬人資產超600萬 華東超600萬人群最多

中國有290萬人資產超600萬元 6.7萬人資產過億 個人資產600萬元以上有290萬人 億萬資產以上的人有6.7萬人 胡潤研究院昨天發布的《2014中國高凈值人群心靈投資白皮書》&#xff08;以下簡稱《白皮書》&#xff09;顯示&#xff0c;截至2013年年底&#xff0c;全國個人資產600…

Idea 同一工程根據不同配置文件啟動、idea 同一工程多實例同時運行

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、需求&#xff1a;有一個 eureka 工程&#xff0c;有2個配置文件。需要根據不同的配置文件啟動 2 次&#xff0c;并保證 2 個實例同時…

H.265:網絡視頻的高清時代

HEVC/H.265標準LOGO 去年八月&#xff0c;愛立信公司推出了首款H.265編解碼器&#xff0c;而在僅僅六個月之后&#xff0c;國際電聯&#xff08;ITU&#xff09;就正式批準通過了HEVC/H.265標準&#xff0c;標準全稱為高效視頻編碼&#xff08;High Efficiency Video Coding&am…

springCloud - 第11篇 - Eureka 注冊中心集群的實現

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 eureka 作為整個微服務項目的注冊中心&#xff0c;到目前為止&#xff0c;在我的系統中一直是單節點的&#xff0c;這樣并不能作到高可用…

男人最佳的生育年限,程序員們,看看吧!!!

男人們一定要看&#xff0c;必須知道的-------這是了解你自己最好的機會。 生育兒女&#xff0c;是人類得以延續的大事。以前&#xff0c;人們基本上都將此重任鎖定在妻子身上&#xff0c;但其實丈夫也是舉足輕重的一方&#xff0c;所以如果有計劃準備當準爸爸&#xff0c;主…

Idea 插件 lombok 的安裝和使用

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 C#在寫一個實體類時&#xff0c;有屬性的寫法&#xff0c;省去了寫getter和setter的麻煩。 在Java編程時&#xff0c;寫完字段后&#x…

主宰全球的10大算法

摘要&#xff1a;Reddit有篇帖子介紹了算法對我們現在生活的重要性&#xff0c;以及哪些算法對現代文明所做貢獻最大&#xff0c;一起來看下。 【編者按】Reddit有篇帖子介紹了算法對我們現在生活的重要性&#xff0c;以及哪些算法對現代文明所做貢獻最大。這個表單并不完整&a…

企業貢獻開源,其背后的戰略動機是什么?

本文作者Balaji Viswanathan通過對Google、Apple、Facebook、Android、Openstack項目等案例進行分析&#xff0c;總結了企業在開源上的戰略性選擇&#xff0c;是很有可能幫助企業戰勝對手的絕好手段。大多數公司通過使用開源軟件獲得了很多競爭上的優勢&#xff0c;這一點毋庸置…

解決:[ERROR] Error executing Maven. [ERROR] 1 problem was encountered while building the effective set

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 報錯如下&#xff1a; [ERROR] Error executing Maven. [ERROR] 1 problem was encountered while building the effective setting…

貢獻開源項目沒那么簡單,你要負責到底

貢獻開源項目不是一件簡單的事&#xff0c;不是說上傳項目到Github或類似的網站&#xff0c;就萬事大吉了&#xff0c;更不能認為你的項目代碼現在已經開源了。還有很多事情要跟進完善。也就是說你要對這個項目負責到底。從長遠角度來看&#xff0c;開源貢獻必須是一條雙行道。…

mybatis show sql 打印 SQL 語句到控制臺

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 方法一&#xff1a; 即&#xff1a; <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE configuratio…

解決:Throwable:Stub index points to a file without PSI: com.intellij.openapi.fileTypes.UnknownFileType

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. IDEA 報錯&#xff1a;stub index point to a file without PSI 并且IDEA 中左邊欄部分內容不斷刷新&#xff0c;死循環一般的閃 .…

個人房貸為啥又貴又難貸 一個房貸銀行有3套邏輯

個人房貸頭上有三頂“帽子”&#xff1a;零售貸款、(中)長期貸款、房地產類貸款&#xff0c;三種分類對應三種邏輯 從去年底至今這段時間里有過買房辦按揭貸款經歷的人&#xff0c;很可能有這樣的困惑&#xff1a;個人征信記錄良好&#xff0c;也有穩定的收入和稅單&#xff0…

解決:Truncated incorrect DOUBLE value: xxxX-1‘

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 運行 sql 報錯&#xff0c;如題&#xff1a; Truncated incorrect DOUBLE value: XXxX-1 2. 原因&#xff1a;字串要加引號&…

Python的優點

Python的優點不少&#xff0c;據很多人說是用了之后就不想再學其他語言的語言&#xff0c;羅列其優點如下&#xff1a; 1、面向對象 從根本上講&#xff0c;Python 是一種面向對象的語言。它的類模塊支持多態、操作符重載和多重繼承等高級概念&#xff0c;并且以Python 特有的簡…

IDEA 中的.iml文件和.idea文件夾 ( 隱藏方式 )

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 初次使用IDEA&#xff0c;創建一個maven工程&#xff0c;發現在目錄結構中產生了兩個不一樣的東西&#xff1a;.iml 文件和 .idea 文件夾…

python的優缺點

python的優缺點 優點 簡單————Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程序就感覺像是在讀英語一樣&#xff0c;盡管這個英語的要求非常嚴格&#xff01;Python的這種偽代碼本質是它最大的優點之一。它使你能夠專注于解決問題而不是去搞明白語言本身。 易…

springCloud - 第12篇 - 服務監控 Hystrix 面板

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 前面有用過 Hystrix 熔斷&#xff0c;在多服務運行時。可以通過 Hystrix 的監控面板來實時觀察各個服務的運行健康、效率和請求量等。 …

專訪Google數據科學家彭晨:大數據成為潮流走近各行各業!

摘要&#xff1a;在“2014中美大數據研討會”開始之前&#xff0c;CSDN采訪了谷歌公司數據科學家彭晨&#xff0c;他表示之所以“大數據”火&#xff0c;是因為人類第一次可以精確的、系統的、實時的、全方位的、永久的獲取、記錄、分析、并保存海量的數據。 端午節后6月6日&a…

解決:ClassNotFoundException: com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 場景&#xff0c;springcloud 學習工程中&#xff0c;把 feign 和 ribbon 工程 作為應用服務&#xff0c;納入 hystrix-turbine 服務…