From 0aa540b5d1a09cbcfd028613e8e844c5dc24a355 Mon Sep 17 00:00:00 2001 From: wusheng Date: Thu, 17 Dec 2015 13:05:33 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E6=96=B0=E7=9A=84traceid?= =?UTF-8?q?=E7=94=9F=E6=88=90=E7=AE=97=E6=B3=95=EF=BC=8C=E8=83=BD=E5=A4=9F?= =?UTF-8?q?=E6=AF=94UUID=E5=9C=A8200=E5=B9=B6=E5=8F=91=E6=83=85=E5=86=B5?= =?UTF-8?q?=E4=B8=8B=EF=BC=8C=E9=80=9F=E5=BA=A6=E6=8F=90=E9=AB=9830?= =?UTF-8?q?=E5=80=8D=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../skywalking/util/TraceIdGenerator.java | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/skywalking-api/src/main/java/com/ai/cloud/skywalking/util/TraceIdGenerator.java b/skywalking-api/src/main/java/com/ai/cloud/skywalking/util/TraceIdGenerator.java index 61ea2fe51..64f0bf6fb 100644 --- a/skywalking-api/src/main/java/com/ai/cloud/skywalking/util/TraceIdGenerator.java +++ b/skywalking-api/src/main/java/com/ai/cloud/skywalking/util/TraceIdGenerator.java @@ -1,13 +1,34 @@ package com.ai.cloud.skywalking.util; +import java.util.HashMap; +import java.util.Random; import java.util.UUID; public final class TraceIdGenerator { + private static final ThreadLocal ThreadTraceIdSequence = new ThreadLocal(); + + private static final String PROCESS_UUID; + + static{ + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + PROCESS_UUID = uuid.substring(uuid.length() - 7); + } + private TraceIdGenerator() { - // Non } - - public static String generate() { - return UUID.randomUUID().toString().replaceAll("-", ""); + + public static String generate(){ + Integer seq = ThreadTraceIdSequence.get(); + if(seq == null || seq == 10000 || seq > 10000){ + seq = 0; + } + seq++; + ThreadTraceIdSequence.set(seq); + + return System.currentTimeMillis() + + "." + PROCESS_UUID + + "." + BuriedPointMachineUtil.getProcessNo() + + "." + Thread.currentThread().getId() + + "." + seq; } }