Spring计时器StopWatch在微服务链路中的使用
1、编写控制器代码测试
/** * @Description: * @author: Eric * @date: 2022-03-25 23:26 * @since: 0.0.1 */@RestController@RequestMapping("/api/v1")@Slf4jpublic 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% task11349151600 047% task22022-03-26 08:11:06.294 INFO 25272 --- [nio-8080-exec-1] c.e.c.test.api.TestController01 : 整个微服务链路总耗时(纳秒):StopWatch 'testIdWorker': running time = 2840380500 ns2022-03-26 08:11:06.295 INFO 25272 --- [nio-8080-exec-1] c.e.c.test.api.TestController01 : 整个微服务链路总耗时(毫秒):2840