1. 程式人生 > >Spring Cloud學習筆記-012

Spring Cloud學習筆記-012

目錄 註冊中心 image yml 接口 面向 基礎 collect 16px

  • 分布式服務跟蹤:Spring Cloud Sleuth

  隨著業務的發展,系統規模也會變得越來越大,各微服務間的調用關系也變得越來越錯綜復雜。通常一個由客戶端發起的請求在後端系統中會經過多個不同的微服務調用來協同產生最後的請求結果,在復雜的微服務架構系統中,幾乎每一個前端請求都會形成一條復雜的分布式服務調用鏈路,在每條鏈路中任何一個依賴服務出現延遲高或錯誤的時候都有可能引起請求最後的失敗。這時候,對於每個請求,全鏈路調用的跟蹤就變得越來越重要,通過實現對請求調用的跟蹤可以幫助我們快速發現錯誤根源以及監控分析每條請求鏈路上的性能瓶頸等。

1. 準備工作,構建一些基礎的設施和應用:

  

服務註冊中心:demo-eureka-server,這裏不做贅述,直接使用之前構建的工程即可。

  ◆ 微服務應用:demo-trace-1,實現一個REST接口/trace-1,調用該接口後將觸發對trace-2應用的調用。具體如下:

  1). 創建一個基礎的sprigboot應用,命名為demo-trace-1,加入web、eureka、ribbon依賴。

  2). 創建應用主類:

  技術分享圖片

  3). 在src\main\resources目錄下創建application.yml文件:

  技術分享圖片

  4). 創建一個基礎的sprigboot應用,命名為demo-trace-2,加入web、eureka、ribbon依賴。

  5). 創建應用主類:

  技術分享圖片

  6). 在src\main\resources目錄下創建application.yml文件:

  技術分享圖片

  7). 將demo-eureka-server、demo-trace-1和demo-trace-2三個應用都啟動起來。測試trace-1接口,確認返回無誤:

  技術分享圖片

2. 完成了準備工作之後,為上面的trace-1和trace-2添加服務跟蹤功能。在trace-1和trace-2的pom.xml文件中添加相關依賴:

技術分享圖片

3. 重啟trace-1和trace-2,再次調用trace-1接口,觀察trace-1控制臺,一些日誌信息,這些元素正是實現分布式服務跟蹤的重要組成部分:

技術分享圖片

  • 與Zipkin整合

  Zipkin是Twitter的一個開源項目,它基於Google Dapper實現。可以使用它來收集各個服務器上請求鏈路的跟蹤數據,並通過它提供的REST API接口來輔助查詢跟蹤數據以實現對分布式系統的監控程序,從而及時發現系統中出現的延遲升高問題並找出系統性能瓶頸的根源。除了面向開發的API接口之外,它還提供了方便的UI組件來幫助我們直觀地搜索跟蹤信息和分析請求鏈路明細,比如可以查詢某段時間內各用戶請求的處理時間等。

  Zipkin主要的4個核心組件:

  Collector:收集器組件,它主要處理從外部系統發送過來的跟蹤信息,將這些信息轉化為Zipkin內部處理的Span格式,以支持後續的存儲、分析、展示等功能。

  Storage:存儲組件,它主要處理收集器接收到的跟蹤信息,默認會將這些信息存儲在內存中。也可以修改此存儲策略,通過使用其他存儲組件將跟蹤信息存儲到數據庫中。

  RESTful API:API組件,它主要用來提供外部訪問接口。比如給客戶端展示工作信息,或是外接系統訪問以實現監控等。

  Web UI:UI組件,基於API組件實現的上層應用。通過UI組件,用戶可以方便而又直觀地查詢和分析跟蹤信息。

1. 創建maven工程,骨架選擇quickstart,命名為demo-zipkin-server

2. 加入相關依賴:

技術分享圖片

3. 創建啟動類:

技術分享圖片

4. 在src\main\resources目錄下創建application.properties文件:

技術分享圖片

5. 啟動該工程(註:需要JDK1.8),並訪問主頁面:

技術分享圖片

6. 改造之前的trace-1和trace-2工程。在兩個工程中都加入相關依賴:

技術分享圖片

7. 在兩個工程的配置文件中增加Zipkin Server的配置信息:

技術分享圖片

8. 重新啟動兩個工程,並訪問trace-1接口,觀察zipkin頁面:

技術分享圖片

技術分享圖片

技術分享圖片

Spring Cloud學習筆記-012