Commit 5b181727948707fd8bc6cedf33cd1a24b8a31722
1 parent
f0a63337
使用FastThreadLocal替换Map来维护traceId
Showing
1 changed file
with
6 additions
and
5 deletions
src/main/java/cn/iocoder/dashboard/framework/tracer/core/util/TracerUtils.java
| @@ -3,6 +3,7 @@ package cn.iocoder.dashboard.framework.tracer.core.util; | @@ -3,6 +3,7 @@ package cn.iocoder.dashboard.framework.tracer.core.util; | ||
| 3 | import cn.hutool.core.util.StrUtil; | 3 | import cn.hutool.core.util.StrUtil; |
| 4 | import cn.hutool.extra.spring.SpringUtil; | 4 | import cn.hutool.extra.spring.SpringUtil; |
| 5 | import cn.iocoder.dashboard.framework.tracer.core.ITrace; | 5 | import cn.iocoder.dashboard.framework.tracer.core.ITrace; |
| 6 | +import io.netty.util.concurrent.FastThreadLocal; | ||
| 6 | import org.apache.skywalking.apm.toolkit.trace.TraceContext; | 7 | import org.apache.skywalking.apm.toolkit.trace.TraceContext; |
| 7 | 8 | ||
| 8 | import java.util.Map; | 9 | import java.util.Map; |
| @@ -19,7 +20,7 @@ public class TracerUtils { | @@ -19,7 +20,7 @@ public class TracerUtils { | ||
| 19 | /** | 20 | /** |
| 20 | * 维护请求线程对应的TraceId | 21 | * 维护请求线程对应的TraceId |
| 21 | */ | 22 | */ |
| 22 | - private final static Map<Thread, String> threadTraceIdMap = new ConcurrentHashMap<>(); | 23 | + private static FastThreadLocal<String> traceIdMap = new FastThreadLocal<>(); |
| 23 | 24 | ||
| 24 | /** | 25 | /** |
| 25 | * 保存链路流水号 | 26 | * 保存链路流水号 |
| @@ -27,7 +28,7 @@ public class TracerUtils { | @@ -27,7 +28,7 @@ public class TracerUtils { | ||
| 27 | * @param traceId 链路流水号 | 28 | * @param traceId 链路流水号 |
| 28 | */ | 29 | */ |
| 29 | public static void saveThreadTraceId(String traceId) { | 30 | public static void saveThreadTraceId(String traceId) { |
| 30 | - threadTraceIdMap.put(Thread.currentThread(), traceId); | 31 | + traceIdMap.set(traceId); |
| 31 | } | 32 | } |
| 32 | 33 | ||
| 33 | /** | 34 | /** |
| @@ -36,14 +37,14 @@ public class TracerUtils { | @@ -36,14 +37,14 @@ public class TracerUtils { | ||
| 36 | * @return 链路流水号 | 37 | * @return 链路流水号 |
| 37 | */ | 38 | */ |
| 38 | public static String getThreadTraceId() { | 39 | public static String getThreadTraceId() { |
| 39 | - return threadTraceIdMap.get(Thread.currentThread()); | 40 | + return traceIdMap.get(); |
| 40 | } | 41 | } |
| 41 | 42 | ||
| 42 | /** | 43 | /** |
| 43 | * 根据线程删除链路流水 | 44 | * 根据线程删除链路流水 |
| 44 | */ | 45 | */ |
| 45 | public static void deleteThreadTraceId() { | 46 | public static void deleteThreadTraceId() { |
| 46 | - threadTraceIdMap.remove(Thread.currentThread()); | 47 | + traceIdMap.remove(); |
| 47 | } | 48 | } |
| 48 | 49 | ||
| 49 | /** | 50 | /** |
| @@ -75,7 +76,7 @@ public class TracerUtils { | @@ -75,7 +76,7 @@ public class TracerUtils { | ||
| 75 | } catch (Throwable ignore) { | 76 | } catch (Throwable ignore) { |
| 76 | } | 77 | } |
| 77 | // 尝试从map中获取 | 78 | // 尝试从map中获取 |
| 78 | - traceId = threadTraceIdMap.get(Thread.currentThread()); | 79 | + traceId = traceIdMap.get(); |
| 79 | if (StrUtil.isNotBlank(traceId)) { | 80 | if (StrUtil.isNotBlank(traceId)) { |
| 80 | return traceId; | 81 | return traceId; |
| 81 | } | 82 | } |