SpringCloud|SpringCloud 2020.0.4 系列之 Sleuth + Zipkin
1. 概述
【SpringCloud|SpringCloud 2020.0.4 系列之 Sleuth + Zipkin】老话说的好:安全不能带来财富,但盲目的冒险也是不可取的,大胆筹划,小心实施才是上策。
言归正传,微服务的特点就是服务多,服务间的互相调用也很复杂,就像一张关系网,因此为了更好的定位故障和优化性能,我们需要有工具帮我们很快的梳理出服务间上下游的调用关系。Sleuth 就可以很好的帮我们解决这个问题。
但 Sleuth 只是做了后台工作,没有展示页面,不方便我们对调用链进行分析。因此需要 Zipkin 去把数据展示出来,方便我们进行分析。
闲话不多说,直接上代码。
2. Zipkin 服务的搭建
2.1 Zipkin 服务的搭建方式
我们打开Zipkin的官网地址:https://zipkin.io/pages/quickstart.html
文章图片
如图所示,Zipkin Server 支持 Docker方式启动,Java 运行 Jar 包方式启动,以及编译源码的方式启动。
2.2 Java 运行 jar 包方式启动
大家可以根据自己的喜好选择启动方式,这里我们选择 Java 运行 jar 包的方式启动。
1)下载 zipkin.jar
# curl -sSL https://zipkin.io/quickstart.sh | bash -s
2)启动 Zipkin Server
# java -jar zipkin.jar
2.3 访问 Zipkin Server
http://IP:9411/zipkin/
文章图片
3. Demo 服务的搭建
3.1 概述
这里我们搭建两个有调用关系的服务作为 Demo。
两个服务都依赖 Sleuth 和 Zipkin。
3.2 my-sleuth-A 的搭建
3.2.1 主要依赖
org.springframework.cloud spring-cloud-starter-netflix-eureka-clientorg.springframework.boot spring-boot-starter-weborg.springframework.boot spring-boot-starter-actuatororg.springframework.cloud spring-cloud-starter-sleuthorg.springframework.cloud spring-cloud-starter-zipkin2.2.8.RELEASE
3.2.2 主要配置
server: port: 46000 spring: application: name: my-sleuth-A sleuth: sampler: probability: 1# 采样率100% zipkin: base-url: http://192.168.1.22:9411# Zipkin Server 地址eureka: client: service-url: defaultZone: http://zhuifengren1:35000/eureka/,http://zhuifengren2:35001/eureka/# Eureka Server的地址
3.2.3 启动类
@SpringBootApplication @EnableDiscoveryClient public class MySleuthAApplication {@LoadBalanced @Bean public RestTemplate lb() { return new RestTemplate(); }public static void main(String[] args) { SpringApplication.run(MySleuthAApplication.class, args); } }
3.2.4 Demo Controller
@RestController @Slf4j public class Controller {@Autowired private RestTemplate restTemplate; @GetMapping("/traceA") public String traceA() { log.info("-------- traceA -------"); return restTemplate.getForEntity ("http://my-sleuth-B/traceB", String.class).getBody(); } }
3.3 my-sleuth-B 的搭建
3.3.1 主要依赖
org.springframework.cloud spring-cloud-starter-netflix-eureka-clientorg.springframework.boot spring-boot-starter-weborg.springframework.boot spring-boot-starter-actuatororg.springframework.cloud spring-cloud-starter-sleuthorg.springframework.cloud spring-cloud-starter-zipkin2.2.8.RELEASE
3.3.2 主要配置
server: port: 46001 spring: application: name: my-sleuth-B sleuth: sampler: probability: 1# 采样率100% zipkin: base-url: http://192.168.1.22:9411# Zipkin Server 地址eureka: client: service-url: defaultZone: http://zhuifengren1:35000/eureka/,http://zhuifengren2:35001/eureka/# Eureka Server的地址
3.3.3 启动类
@SpringBootApplication @EnableDiscoveryClient public class MySleuthBApplication {@LoadBalanced @Bean public RestTemplate lb() { return new RestTemplate(); }public static void main(String[] args) { SpringApplication.run(MySleuthBApplication.class, args); } }
3.3.4 Demo Controller
@RestController @Slf4j public class Controller {@Autowired private RestTemplate restTemplate; @GetMapping("/traceB") public String traceB() { log.info("-------- traceB -------"); return "traceB"; } }
4. Zipkin 的简单使用
4.1 调用 Demo 接口
调用两个Demo工程的接口
GET http://localhost:46001/traceB
GET http://localhost:46000/traceA
4.2 打开 zipkin 查看
文章图片
文章图片
4.3 依赖关系图查看
文章图片
5. 综述
今天聊了一下 调用链追踪 Sleuth + Zipkin ,希望可以对大家的工作有所帮助。
欢迎帮忙点赞、评论、转发、加关注 :)
关注追风人聊Java,每天更新Java干货。
6. 个人公众号
追风人聊Java,欢迎大家关注
文章图片
推荐阅读
- 【欢喜是你·三宅系列①】⑶
- 你不可不知的真相系列之科学
- 人脸识别|【人脸识别系列】| 实现自动化妆
- 2018-06-13金句系列7(金句结构-改编古现代诗词)
- Unity和Android通信系列文章2——扩展UnityPlayerActivity
- 乡野村趣系列之烧仙草
- Java内存泄漏分析系列之二(jstack生成的Thread|Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析)
- 15、IDEA学习系列之其他设置(生成javadoc、缓存和索引的清理等)
- 【年终激励系列】之五(年终奖如何与考核紧密相连)
- 剥削劳动力系列(企业家剥削你时,他要付出巨大的代价)