伊人99re_av日韩成人_91高潮精品免费porn_色狠狠色婷婷丁香五月_免费看的av_91亚色网站

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

如何使用Spring Cloud微服務(wù)的分布式服務(wù)跟蹤

2020-04-29 16:04:45 | 來(lái)源:中培企業(yè)IT培訓(xùn)網(wǎng)

隨著業(yè)務(wù)的日趨復(fù)雜,系統(tǒng)的規(guī)模也會(huì)變得越來(lái)越復(fù)雜龐大,各個(gè)微服務(wù)之間的相互調(diào)用關(guān)系也會(huì)像蜘蛛網(wǎng)一樣錯(cuò)綜復(fù)雜。

通常由客戶端發(fā)出請(qǐng)求后,后端微服務(wù)系統(tǒng)會(huì)通過(guò)許多不同的微服務(wù)調(diào)用共同完成最后請(qǐng)求結(jié)果的產(chǎn)生,在微服務(wù)架構(gòu)系統(tǒng)中,幾乎所有的客戶端請(qǐng)求都會(huì)形成復(fù)雜的分布式服務(wù)鏈路脈絡(luò),任何超時(shí)延遲或者響應(yīng)錯(cuò)誤都有可能造成請(qǐng)求失敗。這時(shí)通過(guò)全鏈路跟蹤每個(gè)相關(guān)的微服務(wù)就變得尤為重要。

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

讓我們來(lái)分解如何為微服務(wù)系統(tǒng)搭建分布式服務(wù)跟蹤的過(guò)程吧!

1.項(xiàng)目中的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設(shè)置端口和eureka:

# 注冊(cè)服務(wù)

spring:

application:

name : sleuth1

sleuth:

sampler:

# 100%請(qǐng)求鏈路跟蹤,一般在開(kāi)發(fā)調(diào)試時(shí)使用

probability: 1

# 10%請(qǐng)求鏈路跟蹤,一般在生成環(huán)境中使用

# probability: 0.1

# 設(shè)置tomcat端口

server:

port : 9900

eureka:

instance:

# 設(shè)置eureka服務(wù)注冊(cè)中心IP地址

hostname : sleuth1

# 用IP地址形式獲取注冊(cè)中心地址

prefer-ip-address : true

client:

serviceUrl:

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

3.修改啟動(dòng)類

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();

}

//通過(guò)/trace1接口調(diào)用sleuth2實(shí)例中的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.關(guān)閉springcloud_Sleuthapp項(xiàng)目,將項(xiàng)目名稱重名為springcloud_Sleuth1app項(xiàng)目,并復(fù)制一份再重名為springcloud_Sleuth2app項(xiàng)目

6.打開(kāi)springcloud_Sleuth2app項(xiàng)目,修改applicaton.yml

# 注冊(cè)服務(wù)

spring:

application:

name : sleuth2

# 設(shè)置tomcat端口

server:

port : 9901

eureka:

instance:

# 設(shè)置eureka服務(wù)注冊(cè)中心IP地址

hostname : sleuth2

# 用IP地址形式獲取注冊(cè)中心地址

prefer-ip-address : true

client:

serviceUrl:

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

7. 打開(kāi)并修改啟動(dòng)類

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.啟動(dòng)ribbon-consumer

10.通過(guò)以下命令啟動(dòng)sleuth1和sleuth2實(shí)例

java -jar c:/sleuth9900.jar

java -jar c:/sleuth9901.jar

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

 

12.通過(guò)瀏覽器輸入地址http://localhost:9900/trace1查看后臺(tái)調(diào)用結(jié)果或通過(guò)命令curl -X GET http://localhost:9900/trace1查看后臺(tái)調(diào)用結(jié)果,如下圖所示:

13.在測(cè)試sleuth1和sleuth2服務(wù)啟動(dòng)成功后,我們停止sleuth1和sleuth2服務(wù),并修改兩個(gè)服務(wù)的pom.xml配置文件,分別加入sleuth依賴并重新打包運(yùn)行

<dependency>

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

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

<version>2.2.0.RELEASE</version>

</dependency>

14.再次運(yùn)行Ribbon-Consumer、Sleuth1和Sleuth2服務(wù),通過(guò)瀏覽器輸入地址http://localhost:9900/trace1查看后臺(tái)調(diào)用結(jié)果或通過(guò)命令curl -X GET http://localhost:9900/trace1查看后臺(tái)調(diào)用結(jié)果,如下圖所示:

此時(shí)Sleuth1和Sleuth2服務(wù)將不是信息孤島了,從圖中可以看出spring.application.name分別是sleuth1服務(wù)名和sleuth2服務(wù)名,它們通過(guò)相同的Trace ID請(qǐng)求鏈路標(biāo)識(shí)連接在了一起,圖中隨機(jī)標(biāo)識(shí)號(hào)為e51a29d938c2e446,在這個(gè)相同的Trace ID請(qǐng)求鏈路標(biāo)識(shí)后面緊跟著Span ID,分別標(biāo)識(shí)sleuth1和sleuth2服務(wù)的分支ID,后面的false參數(shù)代表我們沒(méi)有啟動(dòng)zipkin插件來(lái)收集和展示信息,在后續(xù)的學(xué)習(xí)中我們將會(huì)繼續(xù)講解如何裝配zipkin,從而可以以直觀的web端觀察分布式服務(wù)的跟蹤情況。

本文的最后還要提一下抽樣的收集策略,因?yàn)樵诟卟l(fā)的分布式系統(tǒng)運(yùn)行時(shí),大量的請(qǐng)求調(diào)用會(huì)產(chǎn)生海量的跟蹤日志信息,這會(huì)造成服務(wù)器的大量日志存儲(chǔ)開(kāi)銷如果。所以在Sleuth中采用了抽象收集的方式來(lái)為跟蹤信息打上收集標(biāo)記,可以大大降低存儲(chǔ)開(kāi)銷的冗余。生產(chǎn)環(huán)境中的application.yml配置文件可做如下圖所示的修改:

根據(jù)我們實(shí)際的跟蹤數(shù)據(jù)量的需求,調(diào)整probability參數(shù),從而減輕服務(wù)器的鏈路跟蹤壓力,從抽樣數(shù)據(jù)標(biāo)本中找到問(wèn)題,而不是跟蹤全部數(shù)據(jù),大大提高服務(wù)器的使用效率。

通過(guò)本文的Spring Cloud微服務(wù)的分布式服務(wù)跟蹤可以幫助讀者了解在復(fù)雜的生產(chǎn)環(huán)境中如何跟蹤多個(gè)連接微服務(wù)的情況,以最小數(shù)據(jù)量標(biāo)本找到問(wèn)題,中培的資深架構(gòu)師會(huì)在課堂上給您更深入的微服務(wù)課程的講解和實(shí)戰(zhàn)案例的演示!


標(biāo)簽: 微服務(wù)
主站蜘蛛池模板: www亚洲成人 | 92午夜免费福利757 | 人人妻人人澡人人爽欧美一区九九 | 亚洲逼院 | 992tv在线观看视频 | 黄片123 | 国产SUV精二区九色 欧美在线三级 | A片粗大的内捧猛烈进出AVV | 精品影院 | 粉嫩一区二区三区粉嫩91 | 亚洲精品偷拍自拍 | 久一在线视频 | 国产一级爱c视频 | 四虎影院永久免费 | 艳妇殿荡乳欲伦交换 | 色综合久久婷婷88 | 国产4区 | 国产一级毛片国语普通话对白 | 黄色在线观看视频网站 | 凸凹视频在线 | 精品人伦一区二区三区四区蜜桃牛 | 久久伊人精品影院一本到综合 | 1区2区免费视频 | 国产xxx精品视频大全 | 国产日韩精品一区二区三区在线 | 免费A级毛片无码蜜芽欣赏网 | 天天综合网网欲色 | 88av中文字幕 | 强行扒开女同学腿看屁股眼 | 亚洲精品国产精品久久99 | 一区二区三区高清在线 | 精品二区视频 | 亚洲色婷婷一区二区三区 | 国产精品av久久久久久网址 | 欧美日韩一区在线 | av狼友永久免费网址观看 | 麻豆伦理视频 | av高清在线免费观看 | 午夜诱惑影院 | 亚洲乱码中文字幕综合 | 欧美特黄视频 |