簡介
UUID 的目的,是讓分佈式系統中的所有元素,都能有唯一的辨識信息,而不需要通過中央控制端來做辨識信息的指定。
uuid 常用場景
- IOT 設備,設備號;
- 網站 sessionid,cookie 用戶id;
- 數據庫主鍵id;
uuid 生成工具
hutool Java工具包集
mica 基於 Spring、 java8 微服務工具集
壓測代碼
測試基於 JMH,是專門用於代碼微基準測試的工具套件,基於方法層面的基準測試,精度可以達到微秒級。
壓測代碼源碼存放於 github,感興趣的朋友可以:https://github.com/lets-mica/mica-jmh
jdk8UUId
@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 |
---|---|---|---|
jdk8UUId | 734.595 | 17.220 | ops/ms |
jdk8ThreadLocalRandomUUId | 3224.759 | 32.107 | ops/ms |
hutoolFastSimpleUUID | 3619.748 | 67.195 | ops/ms |
micaUUId(java9 方式) | 12375.405 | 241.879 | ops/ms |
說明:每毫秒生成的 uuid
數,得分越高越好。
總結
mica 由於參考(copy) java9 的 uuid 生成方式性能強勁,是 jdk8 ThreadLocalRandom 和 hutool FastSimpleUUID 的3到4倍的。
由於 uuid 的使用場景一般都需要高性能高併發,大家在使用的時候可以嘗試使用 java9+
或者參考他的算法去實現。
開源推薦
- Spring boot 微服務高效開發
mica
工具集:https://gitee.com/596392912/mica -
Avue
一款基於vue可配置化的神奇框架:https://gitee.com/smallweigit/avue -
pig
宇宙最強微服務(架構師必備):https://gitee.com/log4j/pig -
SpringBlade
完整的線上解決方案(企業開發必備):https://gitee.com/smallc/SpringBlade -
IJPay
支付SDK讓支付觸手可及:https://gitee.com/javen205/IJPay
關注我們
掃描上面二維碼,更多精彩內容每天推薦!