springcloud----链路追踪--Sleuth

概述

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

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

是什么

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

zipkin安装

  • Spring Cloud 从 F 版本过后已经不需要自己构建 Zipkin Server 了,只需要调用jar 即可
  • zipkin下载地址:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/
  • zipkin-server-2.12.9-exec.jar
  • 启动: java -jar zipkin-server-2.12.9-exec.jar

  • 访问控制台:http://localhost:9411/zipkin/

术语

总体图

理解调用链路设计: 一条链路Trace ID唯一标识, Span 标识发起的请求信息,各个 Span 通过 parent id 关联起来

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

案例

消费端、服务端 : xml、yml 配置相同

<!--包含了 sleuth + zipkin-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
spring:
  zipkin:
    base-url: http://localhost:9411  # 服务地址
  sleuth:
    sampler:
      # 采样率介于 0到1 之间 ,1 表示全部采集
      probability: 1

服务端

@GetMapping("/payment/zipkin")
public String zipkin() {
    return "hello zipkin";
}

消费端

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

测试: 打开浏览器访问:http://localhost:9411 进行查看

发布了119 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/getchar97/article/details/105165582