簡介
UUID 的目的,是讓分布式系統中的所有元素,都能有唯一的辨識資訊,而不需要通過中央控制端來做辨識資訊的指定。
uuid 常用場景
- IOT 裝置,裝置号;
- 網站 sessionid,cookie 使用者id;
- 資料庫主鍵id;
uuid 生成工具
hutool Java工具包集 mica 基于 Spring、 java8 微服務工具集壓測代碼
測試基于 JMH,是專門用于代碼微基準測試的工具套件,基于方法層面的基準測試,精度可以達到微秒級。
壓測代碼源碼存放于 github,感興趣的朋友可以:
https://github.com/lets-mica/mica-jmhjdk8UUId
@Benchmark
public String jdk8UUId() {
return UUID.randomUUID().toString();
}
jdk8ThreadLocalRandomUUId
@Benchmark
public String jdk8ThreadLocalRandomUUId() {
ThreadLocalRandom random = ThreadLocalRandom.current();
UUID uuid = new UUID(random.nextInt(), random.nextInt());
return uuid.toString();
}
hutoolFastSimpleUUID
@Benchmark
public String hutoolFastSimpleUUID() {
return IdUtil.fastSimpleUUID();
}
micaUUId
@Benchmark
public String micaUUId() {
return StringUtil.getUUID();
}
壓測環境
- OS: macOS Mojave
- CPU: 2.8 GHz Intel Core i5
- RAM: 8 GB 1600 MHz DDR3
- JVM: Oracle 1.8.0_201 64 bits
壓測結果
Benchmark | Score | Error | Units |
---|---|---|---|
734.595 | 17.220 | ops/ms | |
3224.759 | 32.107 | ||
3619.748 | 67.195 | ||
micaUUId(java9 方式) | 12375.405 | 241.879 |
說明:每毫秒生成的
uuid
數,得分越高越好。
總結
mica 由于參考(copy) java9 的 uuid 生成方式性能強勁,是 jdk8 ThreadLocalRandom 和 hutool FastSimpleUUID 的3到4倍的。
由于 uuid 的使用場景一般都需要高性能高并發,大家在使用的時候可以嘗試使用
java9+
或者參考他的算法去實作。
開源推薦
- Spring boot 微服務高效開發
工具集: https://gitee.com/596392912/micamica
-
一款基于vue可配置化的神奇架構: https://gitee.com/smallweigit/avueAvue
-
宇宙最強微服務(架構師必備): https://gitee.com/log4j/pigpig
-
完整的線上解決方案(企業開發必備): https://gitee.com/smallc/SpringBladeSpringBlade
-
支付SDK讓支付觸手可及: https://gitee.com/javen205/IJPayIJPay