Spring计时器StopWatch在微服务链路中的使用

1、编写控制器代码测试
/**
* @Description: * @author: Eric * @date: 2022-03-25 23:26 * @since: 0.0.1 */ @RestController @RequestMapping("/api/v1") @Slf4j public class TestController01 { /** * 1、测试雪花算法生产全局唯一ID * * @return */ @PostMapping("/testIdWorker") public Response testIdWorker() { IdWorker idWorker = new IdWorker(1, 1, 1); StopWatch stopWatch = new StopWatch("testIdWorker"); /** * 启动一个任务:task1 */ stopWatch.start("task1"); //模拟微服务调用链路1 for (int i = 0; i < 100000; i++) { log.info(String.valueOf(idWorker.nextId())); } stopWatch.stop(); /** * 启动一个任务:task2 */ stopWatch.start("task2"); //模拟微服务调用链路2 for (int i = 0; i < 100000; i++) { log.info(String.valueOf(idWorker.nextId())); } stopWatch.stop(); log.info("整个微服务链路总耗时(纳秒)及各个链路的占比:{}", stopWatch.prettyPrint()); log.info("整个微服务链路总耗时(纳秒):{}", stopWatch.shortSummary()); log.info("整个微服务链路总耗时(毫秒):{}", stopWatch.getTotalTimeMillis()); return Response.ok(); }
2、客户端接口请求

3、接口响应结果数据

2022-03-26 08:11:06.293  INFO 25272 --- [nio-8080-exec-1] c.e.c.test.api.TestController01          : 
整个微服务链路总耗时(纳秒)及各个链路的占比:
StopWatch 'testIdWorker': running time = 2840380500 ns
---------------------------------------------
ns         %     Task name
---------------------------------------------
1491228900  053%  task1
1349151600  047%  task2

2022-03-26 08:11:06.294  INFO 25272 --- [nio-8080-exec-1] c.e.c.test.api.TestController01          : 
整个微服务链路总耗时(纳秒):
StopWatch 'testIdWorker': running time = 2840380500 ns
2022-03-26 08:11:06.295  INFO 25272 --- [nio-8080-exec-1] c.e.c.test.api.TestController01          : 
整个微服务链路总耗时(毫秒):2840

 

 

 

 

posted @ 2022-03-26 20:18  星空666  阅读(92)  评论(0)    收藏  举报