九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
史上最簡(jiǎn)單的SpringCloud教程 | 第九篇: 服務(wù)鏈路追蹤(Spring Cloud Sleuth)

轉(zhuǎn)載請(qǐng)標(biāo)明出處:
http://blog.csdn.net/forezp/article/details/70162074
本文出自方志朋的博客

這篇文章主要講述服務(wù)追蹤組件zipkin,Spring Cloud Sleuth集成了zipkin組件。

一、簡(jiǎn)介

Add sleuth to the classpath of a Spring Boot application (see below for Maven and Gradle examples), and you will see the correlation data being collected in logs, as long as you are logging requests.

—— 摘自官網(wǎng)

Spring Cloud Sleuth 主要功能就是在分布式系統(tǒng)中提供追蹤解決方案,并且兼容支持了 zipkin,你只需要在pom文件中引入相應(yīng)的依賴(lài)即可。

二、服務(wù)追蹤分析

微服務(wù)架構(gòu)上通過(guò)業(yè)務(wù)來(lái)劃分服務(wù)的,通過(guò)REST調(diào)用,對(duì)外暴露的一個(gè)接口,可能需要很多個(gè)服務(wù)協(xié)同才能完成這個(gè)接口功能,如果鏈路上任何一個(gè)服務(wù)出現(xiàn)問(wèn)題或者網(wǎng)絡(luò)超時(shí),都會(huì)形成導(dǎo)致接口調(diào)用失敗。隨著業(yè)務(wù)的不斷擴(kuò)張,服務(wù)之間互相調(diào)用會(huì)越來(lái)越復(fù)雜。

隨著服務(wù)的越來(lái)越多,對(duì)調(diào)用鏈的分析會(huì)越來(lái)越復(fù)雜。它們之間的調(diào)用關(guān)系也許如下:

三、術(shù)語(yǔ)

  • Span:基本工作單元,例如,在一個(gè)新建的span中發(fā)送一個(gè)RPC等同于發(fā)送一個(gè)回應(yīng)請(qǐng)求給RPC,span通過(guò)一個(gè)64位ID唯一標(biāo)識(shí),trace以另一個(gè)64位ID表示,span還有其他數(shù)據(jù)信息,比如摘要、時(shí)間戳事件、關(guān)鍵值注釋(tags)、span的ID、以及進(jìn)度ID(通常是IP地址)
    span在不斷的啟動(dòng)和停止,同時(shí)記錄了時(shí)間信息,當(dāng)你創(chuàng)建了一個(gè)span,你必須在未來(lái)的某個(gè)時(shí)刻停止它。
  • Trace:一系列spans組成的一個(gè)樹(shù)狀結(jié)構(gòu),例如,如果你正在跑一個(gè)分布式大數(shù)據(jù)工程,你可能需要?jiǎng)?chuàng)建一個(gè)trace。
  • Annotation:用來(lái)及時(shí)記錄一個(gè)事件的存在,一些核心annotations用來(lái)定義一個(gè)請(qǐng)求的開(kāi)始和結(jié)束
    • cs - Client Sent -客戶(hù)端發(fā)起一個(gè)請(qǐng)求,這個(gè)annotion描述了這個(gè)span的開(kāi)始
    • sr - Server Received -服務(wù)端獲得請(qǐng)求并準(zhǔn)備開(kāi)始處理它,如果將其sr減去cs時(shí)間戳便可得到網(wǎng)絡(luò)延遲
    • ss - Server Sent -注解表明請(qǐng)求處理的完成(當(dāng)請(qǐng)求返回客戶(hù)端),如果ss減去sr時(shí)間戳便可得到服務(wù)端需要的處理請(qǐng)求時(shí)間
    • cr - Client Received -表明span的結(jié)束,客戶(hù)端成功接收到服務(wù)端的回復(fù),如果cr減去cs時(shí)間戳便可得到客戶(hù)端從服務(wù)端獲取回復(fù)的所有所需時(shí)間
      將Span和Trace在一個(gè)系統(tǒng)中使用Zipkin注解的過(guò)程圖形化:

將Span和Trace在一個(gè)系統(tǒng)中使用Zipkin注解的過(guò)程圖形化:

四、構(gòu)建工程

基本知識(shí)講解完畢,下面我們來(lái)實(shí)戰(zhàn),本文的案例主要有三個(gè)工程組成:一個(gè)server-zipkin,它的主要作用使用ZipkinServer 的功能,收集調(diào)用數(shù)據(jù),并展示;一個(gè)service-hi,對(duì)外暴露hi接口;一個(gè)service-miya,對(duì)外暴露miya接口;這兩個(gè)service可以相互調(diào)用;并且只有調(diào)用了,server-zipkin才會(huì)收集數(shù)據(jù)的,這就是為什么叫服務(wù)追蹤了。

4.1 構(gòu)建server-zipkin

建一個(gè)spring-boot工程取名為server-zipkin,在其pom引入依賴(lài):

<dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>        <dependency>            <groupId>io.zipkin.java</groupId>            <artifactId>zipkin-server</artifactId>        </dependency>        <dependency>            <groupId>io.zipkin.java</groupId>            <artifactId>zipkin-autoconfigure-ui</artifactId>        </dependency>    </dependencies>    <dependencyManagement>        <dependencies>            <dependency>                <groupId>org.springframework.cloud</groupId>                <artifactId>spring-cloud-dependencies</artifactId>                <version>Camden.SR6</version>                <type>pom</type>                <scope>import</scope>            </dependency>        </dependencies>    </dependencyManagement>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

在其程序入口類(lèi), 加上注解@EnableZipkinServer,開(kāi)啟ZipkinServer的功能:

@SpringBootApplication@EnableZipkinServerpublic class ServerZipkinApplication {    public static void main(String[] args) {        SpringApplication.run(ServerZipkinApplication.class, args);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

指定端口:

server.port=9411
  • 1

4.2 創(chuàng)建service-hi

在其pom引入依賴(lài):

<dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <!--compile('org.springframework.cloud:spring-cloud-starter-zipkin')-->        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-starter-zipkin</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>    </dependencies>    <dependencyManagement>        <dependencies>            <dependency>                <groupId>org.springframework.cloud</groupId>                <artifactId>spring-cloud-dependencies</artifactId>                <version>Dalston.RC1</version>                <type>pom</type>                <scope>import</scope>            </dependency>        </dependencies>    </dependencyManagement>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

在其配置文件指定“spring.zipkin.base-url”:

server.port=8988spring.zipkin.base-url=http://localhost:9411spring.application.name=service-hi
  • 1
  • 2
  • 3
  • 4
  • 5

通過(guò)引入spring-cloud-starter-zipkin依賴(lài)和設(shè)置spring.zipkin.base-url就可以了。

對(duì)外暴露接口:

@SpringBootApplication@RestControllerpublic class ServiceHiApplication {    public static void main(String[] args) {        SpringApplication.run(ServiceHiApplication.class, args);    }    private static final Logger LOG = Logger.getLogger(ServiceHiApplication.class.getName());    @Autowired    private RestTemplate restTemplate;    @Bean    public RestTemplate getRestTemplate(){        return new RestTemplate();    }    @RequestMapping("/hi")    public String callHome(){        LOG.log(Level.INFO, "calling trace service-hi  ");        return restTemplate.getForObject("http://localhost:8989/miya", String.class);    }    @RequestMapping("/info")    public String info(){        LOG.log(Level.INFO, "calling trace service-hi ");        return "i'm service-hi";    }    @Bean    public AlwaysSampler defaultSampler(){        return new AlwaysSampler();    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

4.3 創(chuàng)建service-miya

創(chuàng)建過(guò)程痛service-hi,引入相同的依賴(lài),配置下spring.zipkin.base-url。

對(duì)外暴露接口:

@SpringBootApplication@RestControllerpublic class ServiceMiyaApplication {    public static void main(String[] args) {        SpringApplication.run(ServiceMiyaApplication.class, args);    }    private static final Logger LOG = Logger.getLogger(ServiceMiyaApplication.class.getName());    @RequestMapping("/hi")    public String home(){        LOG.log(Level.INFO, "hi is being called");        return "hi i'm miya!";    }    @RequestMapping("/miya")    public String info(){        LOG.log(Level.INFO, "info is being called");        return restTemplate.getForObject("http://localhost:8988/info",String.class);    }    @Autowired    private RestTemplate restTemplate;    @Bean    public RestTemplate getRestTemplate(){        return new RestTemplate();    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

4.4 啟動(dòng)工程,演示追蹤

依次啟動(dòng)上面的三個(gè)工程,打開(kāi)瀏覽器訪問(wèn):http://localhost:9411/,會(huì)出現(xiàn)以下界面:

訪問(wèn):http://localhost:8989/miya,瀏覽器出現(xiàn):

i’m service-hi

再打開(kāi)http://localhost:9411/的界面,點(diǎn)擊Dependencies,可以發(fā)現(xiàn)服務(wù)的依賴(lài)關(guān)系:

點(diǎn)擊find traces,可以看到具體服務(wù)相互調(diào)用的數(shù)據(jù):

本文源碼下載:
https://github.com/forezp/SpringCloudLearning/tree/master/chapter9

五、參考資料

spring-cloud-sleuth

利用Zipkin對(duì)Spring Cloud應(yīng)用進(jìn)行服務(wù)追蹤分析

Spring Cloud Sleuth使用簡(jiǎn)介

優(yōu)秀文章推薦:

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
從零搭建 Spring Cloud 服務(wù)(超級(jí)詳細(xì))
使用Spring Cloud Eureka實(shí)現(xiàn)服務(wù)注冊(cè)與發(fā)現(xiàn)
Java springboot B2B2C o2o多用戶(hù)商城 springcloud架構(gòu):服務(wù)消費(fèi)(基礎(chǔ))
spring-cloud(八)分布式跟蹤[Sleuth]
Spring Cloud Sleuth進(jìn)階實(shí)戰(zhàn)
SpringCloud Feign遠(yuǎn)程調(diào)用公共類(lèi)抽取【SpringCloud系列4】
更多類(lèi)似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服