1.修改新的traceid生成算法,能够比UUID在200并发情况下,速度提高30倍。

This commit is contained in:
wusheng 2015-12-17 13:05:33 +08:00
parent 585c2279b9
commit 0aa540b5d1
1 changed files with 25 additions and 4 deletions

View File

@ -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;
}
}