生成分布式项目批次号
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
import java.util.logging.Logger;
public class getBatchNoDemo {
private static final String DATE_PATTERN = "yyyyMMddHHmmssSSS";
private static int batchNoByIpIndex = 100;
private static String lastyyyyMMddHHmmssSSS="";
public synchronized static String getBatchNo(){
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_PATTERN);
String nowStr = dateFormat.format(new Date());
String localIp = System.getProperty("spring.cloud.inetutils.preferred-networks");
if (localIp == null || localIp.length() <= 0){
localIp = System.getProperty("JVM_DEFAULT_BIND_IP");
}
if(localIp == null || localIp.length() <= 0){
localIp = System.getProperty("SERVICE_IP");
}
if(localIp == null || localIp.length() <= 0){
localIp = UUID.randomUUID().toString();
}
int start = localIp.indexOf(".");
String ipSub = localIp.substring(start);
nowStr
if (nowStr.compareTo(lastyyyyMMddHHmmssSSS) < 0){
throw new RuntimeException("时钟已回拨");
}
if (lastyyyyMMddHHmmssSSS.equals(nowStr)){
if(batchNoByIpIndex >= 999){
try {
Thread.sleep(1);
}catch (Exception e){
}
nowStr = dateFormat.format(new Date());
batchNoByIpIndex = 100;
lastyyyyMMddHHmmssSSS = nowStr;
} else {
batchNoByIpIndex++;
}
} else {
lastyyyyMMddHHmmssSSS = nowStr;
batchNoByIpIndex = 100;
}
return nowStr + localIp.substring(start) + batchNoByIpIndex;
}
}
分布式项目,按生成的批次号对数据捞数并对其进行处理
将同一个批次号生成相似,由于对提升捞数速度,想想索引建立的原理