本文源码:GitHub·点这里 || GitEE·点这里

一、链路追踪简介

1、Sleuth组件简介

Sleuth是SpringCloud微服务系统中的一个组件,实现了链路追踪解决方案。可以定位一个请求到底请求了哪些具体的服务。在复杂的微服务系统中,如果请求发生了异常,可以快速捕获问题所在的服务。

2、项目结构

  • 启动顺序如下
* 注册中心
node07-eureka-7001
* 链路数据收集服务
node07-zipkin-7003
* 服务提供
node07-provider-6001
node07-provider-6002
* 网关路由
node07-zuul-7002

二、搭建链路服务

1、核心依赖

<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
</dependency>
  • 启动类注解:@EnableZipkinServer

2、配置文件

server:
port: 7003
spring:
application:
name: node07-zipkin-7003
eureka:
instance:
hostname: zipkin-7003
prefer-ip-address: true
client:
service-url:
defaultZone: http://registry01.com:7001/eureka/

三、服务配置

这里网关,zuul-7002,服务提供,provider-6001,provider-6002的配置相同。

1、核心依赖

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

2、配置文件

spring:
zipkin:
base-url: http://localhost:7003
sleuth:
sampler:
# 数据 100% 上传
percentage: 1.0

四、测试流程

1、注册中心

一次启动上述服务之后,查看注册中心:

2、请求流程

访问接口

http://localhost:7002/v1/api-6001/get6001Info

这个请求从网关服务进入,到达6001端口服务之后,请求6002端,最终返回结果。

  • 6001接口
@Autowired
private RestTemplate restTemplate ;
@RequestMapping("/get6001Info")
public String get6001Info (){
String server_name = "http://node07-provider-6002" ;
return restTemplate.getForObject(server_name+"/get6002Info",String.class) ;
}
  • 6002接口
@RequestMapping(value = "/get6002Info",method = RequestMethod.GET)
public String get6002Info () {
LOG.info("provider-6002");
return "6002Info" ;
}

3、链路管理界面

1)、UI界面

访问接口

http://localhost:7003/zipkin/

2)、依赖分析

如图点击,【依赖分析】,和上面描述的请求过程完全一致。

五、源代码地址

GitHub·地址
https://github.com/cicadasmile/spring-cloud-base
GitEE·地址
https://gitee.com/cicadasmile/spring-cloud-base

最新文章

  1. 深入学习jQuery特性操作
  2. StringUtils中 isNotEmpty 和isNotBlank的区别
  3. 父元素相对定位后,子元素在ie下被覆盖的问题!
  4. Lind.DDD.Domain.ISortBehavor~上移与下移
  5. Java设计模式11:外观模式
  6. Odoo10尝鲜:制造
  7. IOS之未解问题--给UITableView提取UITableViewDataSource并封装瘦身失败
  8. Struts2 Convention插件的使用(4)使用@Action注解返回json数据
  9. 机器学习算法与Python实践之(三)支持向量机(SVM)进阶
  10. JS模块与命名空间的介绍
  11. pci 相关资料
  12. fatal error C1083: Cannot open precompiled header file: &#39;Debug/xxoo.pch&#39;: No such file or directory
  13. PHP全栈学习笔记6
  14. MFC中psz_data无法读取内存的错误
  15. 使用docker方式安装etcd集群,带TLS证书
  16. C++ 虚函数表解析 继承
  17. 前端之js-echarts组件介绍
  18. 深入理解Java中配置环境变量
  19. Linux便捷命令
  20. BestCoder #88(1001 1002)

热门文章

  1. 《Java基础知识》Java标示符、保留字和数制
  2. uni-app自定义app端的扫码界面
  3. git中的SSL certificate problem: unable to get local issuer certificate错误的解决办法
  4. Mysql相关知识总结-持续更新~~~
  5. 缓存keep-alive
  6. 周末DHU友谊赛(半日游)感想
  7. 拉丁方阵问题 -- python实现
  8. spring单元测试下模拟rabbitmq
  9. Vue初始化过程
  10. ArcGIS API for JavaScript小白入门