SpringCloud09 -- 分布式请求链路追踪 Sleuth

SpringCloud全家桶:SpringCloud01 – 初识
SpringCloud全家桶:SpringCloud02 – 服务注册 Eureka Zookeeper Consul Nacos
SpringCloud全家桶:SpringCloud03 – 服务调用 Ribbon OpenFeign
SpringCloud全家桶:SpringCloud04 – 服务降级熔断 Hystrix Sentinel
SpringCloud全家桶:SpringCloud05 – 服务网关 Gateway
SpringCloud全家桶:SpringCloud06 – 服务配置 Config Nacos
SpringCloud全家桶:SpringCloud07 – 消息总线 Bus
SpringCloud全家桶:SpringCloud08 – 消息驱动 Stream
SpringCloud全家桶:SpringCloud09 – 分布式请求链路追踪 Sleuth
SpringCloud全家桶:SpringCloud10 – Alibaba Nacos
SpringCloud全家桶:SpringCloud11 – Alibaba Sentinel
SpringCloud全家桶:SpringCloud12 – Alibaba 分布式事务 Seata

分布式请求链路追踪

sleuth

为什么出现这个技术?

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

SpringCloud09 -- 分布式请求链路追踪 Sleuth_第1张图片

trance:类似于树结构的span集合,表示一条调用链路,存在唯一的标识。

span:表示调用链路来源,通俗的理解span就是一次请求信息。

zipkin环境

https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/2.12.9/

下载 打开cmd 运行 java -jar zipkin-server-2.12.9-exec

SpringCloud09 -- 分布式请求链路追踪 Sleuth_第2张图片

访问:http://localhost:9411/zipkin

使用

修改cloud-provider-payment8001

pom


<dependency>
	<groupId>org.springframework.cloudgroupId>
	<artifactId>spring-cloud-starter-zipkinartifactId>
dependency>

yml

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

controller

@RequestMapping(value = "/payment/zipkin",method = RequestMethod.GET)
    public String getZipkin(){
        return "hi, this is zipkin's fallback strings";
    }

修改cloud-consumer-order80

pom


<dependency>
	<groupId>org.springframework.cloudgroupId>
	<artifactId>spring-cloud-starter-zipkinartifactId>
dependency>

yml

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

controller

  @RequestMapping(value = "/consumer/payment/zipkin",method = RequestMethod.GET)
    public String paymentZipkin(){
        String result = restTemplate.getForObject("http://localhost:8001"+"/payment/zipkin/",String.class);
        return result;
    }

运行 http://localhost/consumer/payment/zipkin

SpringCloud09 -- 分布式请求链路追踪 Sleuth_第3张图片
SpringCloud09 -- 分布式请求链路追踪 Sleuth_第4张图片
SpringCloud09 -- 分布式请求链路追踪 Sleuth_第5张图片

你可能感兴趣的:(SpringCloud,分布式)