1、概要

一般的,一个分布式服务跟踪系统,主要有三部分:

  • 数据收集
  • 数据存储
  • 数据展示

然而这三个部分其实不都是由SpringCloud Sleuth(下面我简称为Sleuth)完成的,Sleuth负责数据的收集,而数据的存储和数据的展示由Zipkin完成

首先我们需要搞清楚,链路追踪功能由Sleuth(数据收集),Zipkin(数据存储、数据展示)这两个组件组合完成的。

下面我们对它们分别介绍

2、Sleuth

①产生原因

在微服务框架中,一个客户端的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前端请求都会产生一个复杂的服务调用链路,链路中的任何一环出现高延迟或错误都会导致请求的失败

Springcloud考虑到这个问题,Sleuth即为长链路调用的链路跟踪监控组件

②简介

SpringCloud Sleuth官网:Spring Cloud Sleuth

这是SpringCloud Sleuth的概念图:

trace:一次完整的请求,从服务开始到执行完成

span:在一次trace中,每调用一个服务就会记录调用的信息和响应时间,这就是一个span

下图中,Trace全为X表示一次调用,其中每个服务调用都有一个span,不同服务调用span不同。

可见sleuth能够通过trace和span,追踪到一次调用经过了哪些服务,每个服务的耗费时间

3、Zipkin

①简介

Zipkin是一个开源的追踪系统,它负责收集,存储数据并展示给用户

这里说Zipkin的收集不同于Sleuth的收集,Sleuth是通过监控来实现信息的收集而Zipkin的收集是将Sleuth采集的数据进行接收

官网也表达的很清楚:

本文中,Sleuth负责数据的收集,Zipkin负责存储和展示

Zipkin提供了不同的数据存储方式:

  1. Merory(内存存储)
  2. Mysql(关系型数据库)
  3. Cassandra(非关系型数据库ps本人还没有接触过)
  4. Elasticsearch

4、搭建

①安装zipkin

下载地址:

阿里云网盘

运行:

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

进入控制台:

http://localhost:9411/zipkin/

②Provider

在之前的工程cloud-provider-payment8001上进行修改

添加依赖:

<!--包含了sleuth+zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

添加配置:

spring:
zipkin:
base-url: http://localhost:9411 #zipkin Server的地址
sleuth:
sampler:
probability: 1 #采样率值介于0到1之间,1则表示全部采集(一般不为1,不然高并发性能会有影响)

在Controller中添加方法:

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

③Consumer

在之前的工程cloud-consumer-order80(服务消费者)上进行更改

添加依赖:

<!--包含了sleuth+zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

添加配置:

spring:
zipkin:
base-url: http://localhost:9411 #zipkin Server的地址
sleuth:
sampler:
probability: 1 #采样率值介于0到1之间,1则表示全部采集(一般不为1,不然高并发性能会有影响)

在Controller中添加方法:

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

④测试

前面已经启动了zipkin Server了

启动Eureka注册中心7001,Order80,Payment8001

调用Order接口,Order接口调用了Payment的接口:

http://localhost/consumer/payment/zipkin

进入Zipkin面板查看:

查看服务依赖:

最新文章

  1. C#实现函数默认值和C#4.0实现默认值
  2. mysql-函数CASE WHEN 语句使用说明
  3. angularjs 菜鸟教程 版本1.4.6
  4. Nodejs开发(2.连接MongoDB)
  5. DNS协议
  6. eclipse 切换svn账号
  7. Zedboard VmodCAM PIN Constraint
  8. linux svn使用
  9. (Android Studio)添加文本框
  10. cocos2d-x快乐的做让人快乐的游戏3:cocos-2d 3.x中的物理世界
  11. 设计模式 Template Method模式 显示程序猿的一天
  12. Android 屏幕截图(底层实现方式)
  13. L6,Percy Buttons
  14. RobotFramework自动化测试框架的基础关键字(五)
  15. fullpage 全屏插件
  16. Python 概念小屋
  17. visual studio 启动报 activityLog.xml文件 错误
  18. css零碎知识点小结
  19. C语言下的错误处理的问题
  20. ACM数论之旅5---数论四大定理(你怕不怕(☆゚∀゚)老实告诉我)

热门文章

  1. Android Studio打开时报错if you already hava 64-bit JDK installed,define a JAVA_HOME
  2. 3. qtdesinger的使用方法
  3. 第2-4-10章 规则引擎Drools实战(3)-保险产品准入规则
  4. Java手写一个批量获取数据工具类
  5. ATM项目
  6. RGB以及RGBA
  7. 你的项目使用Optional了吗?
  8. 更改jenkins插件地址为国内源地址
  9. CH392/CH395常见问题解决方法指南
  10. 《Effective C++》构造、析构、赋值运算