zoukankan      html  css  js  c++  java
  • 【SpringCloud】SpringCloud Sleuth分布式链路跟踪

    SpringCloud Sleuth分布式链路跟踪

    概述

    为什么会出现这个技术?需要解决哪些问题?

    问题:在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一鰒杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。

    是什么

    • https://cloud.spring.io/spring-cloud-sleuth/reference/html/
    • Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案
    • 在分布式系统中提供追踪解决方案并且兼容支持了zipkin

    解决

    搭建链路监控步骤

    1.zipkin

    下载

    • SpringCloud从F版已不需要自己构建Zipkin Server了,只需要调用jar包即可
    • https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/
    • zipkin-server-2.12.9-exec.jar

    运行jar

    java -jar zipkin-server-2.12.9-exec.jar

    运行控制台

    http://localhost:9411/zipkin/

    术语

    完整的调用链路

    表示一请求链路,一条链路通过Trace Id唯一标识,Span标识发起的请求信息,各span通过parent id关联起来

    上图what

    名词解释
    • Trace:类似于树结构的Span结合,表示一条调用链路,存在唯一标识
    • span:标识调用链路来源,通俗的理解span就是一次请求信息

    2.服务提供者

    cloud-provider-payment8001

    POM

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

    YML

    spring:
      application:
        name: cloud-payment-service
      zipkin:
        base-url: http://localhost:9411
      sleuth:
        sampler:
          #采样取值介于 0到1之间,1则表示全部收集
          probability: 1

    业务类PaymentController

    新增一个方法

    @GetMapping(value="/payment/zipkin")
    public String paymentZipkin() {
        return "hello,i am paymentZipkin server fallback,O(∩_∩)O哈哈~";
    }

    3.服务消费者

    cloud-consumer-order80

    POM

    <!-- 包含了sleuth zipkin 数据链路追踪-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-zipkin</artifactId>
    </dependency>

    YML

    spring:
      application:
        name: cloud-order-service
      zipkin:
        base-url: http://localhost:9411
      sleuth:
        sampler:
          #采样取值介于 0到1之间,1则表示全部收集
          probability: 1

    业务类ordercontroller

    @GetMapping(value="/consumer/payment/zipkin")
    public String paymentZipkin() {
        return restTemplate.getForObject(PAYMENT_URL + "/payment/zipkin/",String.class);
    }

    4.依次启动eureka7001/8001/80

    80调用8001几次测试下

    5.打开浏览器访问http://localhost:9411

    会出现以下界面

    查看

    查看依赖关系

    原理

    后海有树的院子,夏代有工的玉,此时此刻的云,二十来岁的你。——《可遇不可求的事》

    笔者将不定期更新【考研或就业】的专业相关知识以及自身理解,希望大家能【关注】我。
    如果觉得对您有用,请点击左下角的【点赞】按钮,给我一些鼓励,谢谢!
    如果有更好的理解或建议,请在【评论】中写出,我会及时修改,谢谢啦!
    关注
    评论
    收藏
    Top
  • 相关阅读:
    ACM-ICPC 2017 西安赛区现场赛 A. XOR(线性基+线段树)
    ACM-ICPC 2017 西安赛区现场赛 K. LOVER II && LibreOJ#6062. 「2017 山东一轮集训 Day2」Pair(线段树)
    Codeforces Round #512 (Div. 2, based on Technocup 2019 Elimination Round 1) E. Vasya and Good Sequences(DP)
    URAL 2052 Physical Education(数位DP)
    Educational Codeforces Round 50 (Rated for Div. 2) F
    Codeforces Round #509 (Div. 2) F. Ray in the tube(思维)
    Codeforces Round #509 (Div. 2) E. Tree Reconstruction(构造)
    ACM-ICPC 2018 青岛赛区网络预赛 J. Press the Button(数学)
    ACM-ICPC 2018 焦作赛区网络预赛 K. Transport Ship(DP)
    [ Codeforces Round #549 (Div. 2)][D. The Beatles][exgcd]
  • 原文地址:https://www.cnblogs.com/blknemo/p/13526497.html
Copyright © 2011-2022 走看看