1.修改新的traceid生成算法,能够比UUID在200并发情况下,速度提高30倍。
This commit is contained in:
parent
585c2279b9
commit
0aa540b5d1
|
|
@ -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<Integer> ThreadTraceIdSequence = new ThreadLocal<Integer>();
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue