| package com.example.zipkinserver; import org.spring work.boot.SpringApplication; import org.spring work.boot.autoconfigure.SpringBootApplication; import zipkin.server.internal.EnableZipkinServer; /** * 服务追踪:发现一个服务调用的时候很慢,需要做优化,我们可以用服务跟踪可以看到具体调用慢的是那个服务。 * * Spring Cloud Sleuth服务跟踪: * * 跟踪调用服务链路从而监控链路之间的一个时间。比如a服务调用了b服务又调用了c服务又调用了d服务d服务需要口库存,我们如何去排除哪一个服务消费的时间多呢?d服务需要扣库存是有事务的要花更多的时间这里的时间就会长一些,要是b和c服务的时间要比d服务的时间长那么就敢肯定b服务和c服务之间出了问题,那么这里面是带宽问题呢?还是调用过程中处理网络不太稳定呢或者处理过程中延迟呢这些东西我们都要从这里面去看我们可以通过消耗的时间去判定。也不是完全智能的。 * * 监控所用的客户端工具:zipkin(https://zipkin.io/)可以监控到调度服务的整个链路,任务调度的各个时间点,是怎么去掉的,各个依赖关系你的时间你的链路怎么去走的。可以使用docker和java启动。 * * 1>构建链路监控服务zipkin-server只需要依赖web,然后还需要zipkinServer依赖zipkin-server,zipkin-autoconfigure-ui这个两个一定要加上版本,springboot中没有包含这两个。 * * 2>在application.yml文件中配置个端口号和management: metrics: web: server: auto-time-requests: false自动响应时间为false,否则请求报错即可,然后在zipkin-server启动类上加上@EnableZipkinServer * * 3>启动zipkin-server访问/zipkin/index.html * * 4>把所有链路相关的信息发送到这个服务器中来进行分析,首先构建多个服务,让其相互之间调用即可。创建3个服务看一下调用链。创建service-aaa,service-bbb,service-ccc依赖web,zkpkin client依赖。然后在service-aaa中构建一个简单的服务,由于我们是要交给zipkin-server监控的,我们需要在application.yml中配置spring: zipkin: -url: http://localhost:9411 # zipkin服务地址 sleuth: sampler: probability: 1 # 抽样百分比 sender: type: web # 链路类型(kafka,rabbitmq) application: name: aaaserver: port: 7777。在service-bbb,service-ccc中的application.yml做同样的配置,修改下application:name,server:port。现在在service-aaa的启动类中简单的调用下服务即可:通过@Bean创建RestTemplate,在启动类上加上@RestController。然后通过@getmapping提供普通的返回字符串的方法,然后再通过@getmapping提供一个通过RestTemplate调用bbb服务方法返回字符串即可。然后在service-bbb同样的在启动类中这样定义,service-bbb就调用ccc服务,service-ccc就通过@getmapping提供普通的返回字符串的方法供service-bbb调用。现在链路就已经确定清除了。 * * 5>启动3台微服务service-aaa,service-bbb,service-ccc。然后再service-aaa上请求/aaa多请求几次我们就可以再/zipkin上看到然后点进去就可以看到相关的请求的所消耗的时间了,请求的链路。这时候依赖关系中为空,因为它的服务根本就没有依赖关系。这上面可以查找对应的服务名的服务,也可以查找所有,可以在sort中查看最新的一次,可以查找到对应服务请求了哪些路径。可以看到它们请求被zipkin监控到的命中率。这时候只有aaa没有bbb,ccc因为请求的是自己的服务并没有调用链路请求通过RestTemplate调用到bbb服务到ccc服务当中去。我们可以来调用以下/ /bbb用7777端口。多访问几次,zipkin就有了,zipkin可以设置取样。这个时候可以看到aaa下就有bbb了,访问aaa用的时间到bbb用的时间总时间和到bbb所用的时间,双击时间可以看到从发送调用,服务接收,客户端接收到请求,给服务端回应对应的响应时间,还有地址请求方式,路径那个主要的controller,调用的那个方法都可以看到,还有更多信息,traceId,spanId,parentId,就是从哪一个id往上去调用的,还可以看到对应的json数据,再依赖分析里面可以看到两个服务之间的依赖点击可以看到请求的数量。这样就可以分析哪一个方法耗费的时间比较多。当我们在访问/ /ccc用8888端口,在依赖中就可以看到整个依赖 关系aaa依赖bbb然后bbb依赖ccc整个链路就出来了。如果ccc服务挂掉在访问/ /ccc用8888端口就可以监控到红色的它有一个错误链接被拒绝,从bbb过来的是红色显示。发现连的是ccc最后是bbb响应出来因为链接被拒绝了。 */ @SpringBootApplication @EnableZipkinServer public class ZipkinServerApplication { public static void main(String[] args) { SpringApplication.run(ZipkinServerApplication.class, args); } } |
继续阅读与本文标签相同的文章
上一篇 :
比截图靠谱得多!教你如何用微信发送Excel数据
-
为什么它有典型FaaS能力,却是非典型FaaS架构? | 开发者必读(065期)
2026-05-18栏目: 教程
-
Mybatis执行SQL的4大基础组件详解
2026-05-18栏目: 教程
-
Java描述设计模式(08):桥接模式
2026-05-18栏目: 教程
-
Java描述设计模式(09):装饰模式
2026-05-18栏目: 教程
-
Java描述设计模式(10):组合模式
2026-05-18栏目: 教程
