欧美麻豆久久久久久中文_成年免费观看_男人天堂亚洲成人_中国一级片_动漫黄网站免费永久在线观看_国产精品自产av一区二区三区

中培偉業IT資訊頻道
您現在的位置:首頁 > IT資訊 > 精選文章 > 如何使用Spring Cloud微服務的分布式服務跟蹤

如何使用Spring Cloud微服務的分布式服務跟蹤

2020-04-29 16:04:45 | 來源:中培企業IT培訓網

隨著業務的日趨復雜,系統的規模也會變得越來越復雜龐大,各個微服務之間的相互調用關系也會像蜘蛛網一樣錯綜復雜。

通常由客戶端發出請求后,后端微服務系統會通過許多不同的微服務調用共同完成最后請求結果的產生,在微服務架構系統中,幾乎所有的客戶端請求都會形成復雜的分布式服務鏈路脈絡,任何超時延遲或者響應錯誤都有可能造成請求失敗。這時通過全鏈路跟蹤每個相關的微服務就變得尤為重要。

針對上面所述的分布式服務跟蹤問題,Spring Cloud Sleuth提供了一套完整的解決方案。

讓我們來分解如何為微服務系統搭建分布式服務跟蹤的過程吧!

1.項目中的pom.xml配置文件中引入springcloud版本和eureka、ribbon依賴:

<spring-cloud.version>Hoxton.RC2</spring-cloud.version>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>

<version>2.2.0.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-ribbon</artifactId>

<version>1.4.7.RELEASE</version>

</dependency>

完整pom.xml配置如下圖所示:

2.修改application.yml設置端口和eureka:

# 注冊服務

spring:

application:

name : sleuth1

sleuth:

sampler:

# 100%請求鏈路跟蹤,一般在開發調試時使用

probability: 1

# 10%請求鏈路跟蹤,一般在生成環境中使用

# probability: 0.1

# 設置tomcat端口

server:

port : 9900

eureka:

instance:

# 設置eureka服務注冊中心IP地址

hostname : sleuth1

# 用IP地址形式獲取注冊中心地址

prefer-ip-address : true

client:

serviceUrl:

defaultZone : http://localhost:9002/eureka/

3.修改啟動類

package com.trace.sleuth;

import org.jboss.logging.Logger;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;

import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

import org.springframework.context.annotation.Bean;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RestController;

import org.springframework.web.client.RestTemplate;

@RestController

@EnableEurekaServer

@EnableDiscoveryClient

@SpringBootApplication

public class SleuthApplication {

private final Logger logger=Logger.getLogger(getClass());

@Bean

@LoadBalanced

RestTemplate restTemplate() {

return new RestTemplate();

}

//通過/trace1接口調用sleuth2實例中的trace2接口

@RequestMapping(value="/trace1",method=RequestMethod.GET)

public String trace1() {

logger.info("call sleuth_trace1");

return restTemplate().getForEntity("http://sleuth2/trace2", String.class).getBody();

}

public static void main(String[] args) {

SpringApplication.run(SleuthApplication.class, args);

}

4. Maven clean,maven install,將打包的jar重名為sleuth9900.jar

5.關閉springcloud_Sleuthapp項目,將項目名稱重名為springcloud_Sleuth1app項目,并復制一份再重名為springcloud_Sleuth2app項目

6.打開springcloud_Sleuth2app項目,修改applicaton.yml

# 注冊服務

spring:

application:

name : sleuth2

# 設置tomcat端口

server:

port : 9901

eureka:

instance:

# 設置eureka服務注冊中心IP地址

hostname : sleuth2

# 用IP地址形式獲取注冊中心地址

prefer-ip-address : true

client:

serviceUrl:

defaultZone : http://localhost:9002/eureka/

7. 打開并修改啟動類

package com.trace.sleuth;

import org.jboss.logging.Logger;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RestController;

@RestController

@EnableEurekaServer

@EnableDiscoveryClient

@SpringBootApplication

public class SleuthApplication {

private final Logger logger=Logger.getLogger(getClass());

@RequestMapping(value="/trace2",method=RequestMethod.GET)

public String trace1() {

logger.info("call sleuth_trace2");

return " sleuth_trace2";

}

public static void main(String[] args) {

SpringApplication.run(SleuthApplication.class, args);

}

8.maven clean,maven install,將打包的jar重名為sleuth9901.jar

9.啟動ribbon-consumer

10.通過以下命令啟動sleuth1和sleuth2實例

java -jar c:/sleuth9900.jar

java -jar c:/sleuth9901.jar

11. 查看http://localhost:9002,Ribbon-Consumer、Sleuth1和Sleuth2服務都已經分別在端口9002、9900和9901上啟動了,如下圖所示:

 

12.通過瀏覽器輸入地址http://localhost:9900/trace1查看后臺調用結果或通過命令curl -X GET http://localhost:9900/trace1查看后臺調用結果,如下圖所示:

13.在測試sleuth1和sleuth2服務啟動成功后,我們停止sleuth1和sleuth2服務,并修改兩個服務的pom.xml配置文件,分別加入sleuth依賴并重新打包運行

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-sleuth</artifactId>

<version>2.2.0.RELEASE</version>

</dependency>

14.再次運行Ribbon-Consumer、Sleuth1和Sleuth2服務,通過瀏覽器輸入地址http://localhost:9900/trace1查看后臺調用結果或通過命令curl -X GET http://localhost:9900/trace1查看后臺調用結果,如下圖所示:

此時Sleuth1和Sleuth2服務將不是信息孤島了,從圖中可以看出spring.application.name分別是sleuth1服務名和sleuth2服務名,它們通過相同的Trace ID請求鏈路標識連接在了一起,圖中隨機標識號為e51a29d938c2e446,在這個相同的Trace ID請求鏈路標識后面緊跟著Span ID,分別標識sleuth1和sleuth2服務的分支ID,后面的false參數代表我們沒有啟動zipkin插件來收集和展示信息,在后續的學習中我們將會繼續講解如何裝配zipkin,從而可以以直觀的web端觀察分布式服務的跟蹤情況。

本文的最后還要提一下抽樣的收集策略,因為在高并發的分布式系統運行時,大量的請求調用會產生海量的跟蹤日志信息,這會造成服務器的大量日志存儲開銷如果。所以在Sleuth中采用了抽象收集的方式來為跟蹤信息打上收集標記,可以大大降低存儲開銷的冗余。生產環境中的application.yml配置文件可做如下圖所示的修改:

根據我們實際的跟蹤數據量的需求,調整probability參數,從而減輕服務器的鏈路跟蹤壓力,從抽樣數據標本中找到問題,而不是跟蹤全部數據,大大提高服務器的使用效率。

通過本文的Spring Cloud微服務的分布式服務跟蹤可以幫助讀者了解在復雜的生產環境中如何跟蹤多個連接微服務的情況,以最小數據量標本找到問題,中培的資深架構師會在課堂上給您更深入的微服務課程的講解和實戰案例的演示!


標簽: 微服務
主站蜘蛛池模板: 天天爽夜夜爽人人爽QC | 岛国AAAA级午夜福利片 | 天天躁日日躁狠狠躁AV中文 | 在线观看中文视频 | 欧美一区二区黄色片 | s久久亚洲综合色 | 中文字幕日产乱码中 | 天天爽夜夜爽人人爽从早干到睌 | 黑色蕾丝丝袜麻麻好紧好爽 | 中国熟妇人妻xxxxx | 国产熟妇高潮叫床视频播放 | 一本大道嫩草av无码专区 | 国产午夜精华无码网站 | 熟妇女人妻丰满少妇中文字幕 | 国产又黄又爽又色的免费视频 | 美女高潮无遮挡免费视频 | 无码国产精品免费看 | 蜜桃视频在线免费播放 | 色资源AV中文无码先锋 | 免费看人妻换人妻互换a片爽 | 日韩精品无码一区二区三区不卡 | 午夜三级理论在线观看 | 四虎成人www成人影视网址 | 日韩精品无码AV成人观看 | 国产清纯白嫩初高生在线观看 | 亚洲av网站 | 人妻av无码专区 | 亚洲精品国产第一区二区尤物 | GV无码免费无禁网站男男 | 久久97超碰色中文字幕总站 | 欧美18videos极品 | 黑人上司与人妻激烈中文字幕 | 日本A级视频在线播放 | 狠狠综合久久AV一区二区 | 中文字幕+乱码+中文字幕一区 | 麻豆国产精品久久人妻 | 鲁鲁鲁爽爽爽在线视频观看 | 精品国产AV一区二区三区 | 5g多人运动罗志祥免费观看影视网 | 亚洲国产精品无码专区影院 | 婷婷五月网丁香五月 |