写点什么

Sleuth 服务跟踪大厂高频面试题:整合 -Zipkin,java 面向对象程序开发及实战答案

用户头像
极客good
关注
发布于: 刚刚

首先我们需要创建一个 Zipkin 的项目,集成 Zipkin 的 ui 用于数据的展示和收集,pom.xml 配置如下:


<dependency><groupId>io.zipkin.java</groupId><artifactId>zipkin-server</artifactId></dependency>


<dependency><groupId>io.zipkin.java</groupId><artifactId>zipkin-autocongure-ui</artifactId></dependency>


创建启动类:


@SpringBootApplication@EnableZipkinServerpublic class zipKinServerApplication {public static void m


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


ain(String[] args){SpringApplication.run(ZipKinServerApplication.class, args);}}


增加配置信息:


spring.application.name = fangjia-zipkinserver.port=9411


到此为止,Zipkin 的服务就创建好了。启动后访问 http://localhost:9411/zipkin/ 就可以看到管理页面了,如下图所示。


二、项目集成 Zipkin 发送调用链数据

在之前的文章中,我们只是集成了 Spring Cloud Sleuth,然后将跟踪信息输出到日志中。现在,Zipkin 的服务创建好了,需要将链路跟踪的信息发送给 Zipkin 的收集服务。


需要在项目中添加如下依赖:


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


在属性文件中可以配置 Zipkin 的地址,默认是 http://127.0.1:9411 ,这样才能将跟踪的数据发送到执行的收集服务中。

配置 zipKin Server 的地址

spring.zipkin.base-url = http://127.0.0.1:9411


然后我们启动之前的服务、访问接口,就可以看到数据已经能够在 Zipkin 的 Web 页面中了,如下图所示。



三、抽样采集数据

在实际使用中可能调用了 10 次接口,但是 Zipkin 中只有一条数据,这是因为收集信息是有一定比例的,这并不是 bug。Zipkin 中的数据条数与调用接口次数默认比例是 0.1,当然我们也可以通过配置来修改这个比例值:

zipkin 抽样比例

spring.sleuth.sampler.percentage= 1


之所以有这样的一个配置,是因为在高并发下,如果所有数据都采集,那这个数据量就太大了,采用抽样的做法可以减少一部分数据量,特别是对于 Http 方式去发送采集数据,对性能有很大的影响。

四、用 RabbitMQ 代替 Http 发送调用链数据

虽然有基于采样的收集方式,但是数据的发送采用 Http 还是对性能有影响。如果 Zipkin 的服务端在重启或者挂掉了,那么将丢失部分采集数据。为了解决这些问题,我们将集成 spring-cloud-sleuth-zipkin-stream ,用 RabbitMQ 来发送采集数据,利用消息队列来提高发送性能,保证数据不丢失。


首先改造我们的 Zipkin 项目,增加 steam 的依赖:


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


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


然后在启动类上加上 @EnableZipkinStreamServer 注解,把之前的 @EnableZipkinServer 去掉。属性文件中增加 RabbitMQ 的连接配置:

rabbitmq 配置

spring.rabbitmq.addresses=amqp://192.168.10.47:5672spring.rabbitmq.username=yinjihuanspring.rabbitmq.password=123456

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
Sleuth服务跟踪大厂高频面试题:整合-Zipkin,java面向对象程序开发及实战答案