1. 程式人生 > 其它 >Spring計時器StopWatch在微服務鏈路中的使用

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