一個比 UUID 快百倍的唯一 ID 生成器
前言
在遊戲開發中,我們經常要為 Request、物件或其它東西設定全域性唯一的 ID。常見的選擇有隨機數、時間戳、UUID、用 Redis 生成 ID 等,這些選擇要麼可能重複,要麼太慢,於是我開發了 WUID,一個極快的唯一 ID 生成器。
WUID 比 UUID 快 10-135 倍,比用 Redis 生成 ID 快 4600 倍。
核心設計
WUID 順序生成 64 位整數,其高 24 位是從外部儲存載入的,每次載入自動加 1。
目前支援的外部儲存包括:Redis、MySQL、MongoDB。
Benchmarks
BenchmarkWUID 100000000 10.3 ns/op 0 B/op 0 allocs/op
BenchmarkRand 50000000 24.6 ns/op 0 B/op 0 allocs/op
BenchmarkTimestamp 100000000 12.3 ns/op 0 B/op 0 allocs/op
BenchmarkUUID_V1 20000000 107 ns/op 0 B/op 0 allocs/op
BenchmarkUUID_V2 20000000 106 ns/op 0 B/op 0 allocs/op
BenchmarkUUID_V3 5000000 359 ns/op 144 B/op 4 allocs/op
BenchmarkUUID_V4 1000000 1376 ns/op 16 B/op 1 allocs/op
BenchmarkUUID_V5 3000000 424 ns/op 176 B/op 4 allocs/op
BenchmarkRedis 30000 46501 ns/op 176 B/op 5 allocs/op
BenchmarkSnowflake 5000000 244 ns/op 0 B/op 0 allocs/op
特點
- 速度極快
- 執行緒安全
- 保證在同一機房內唯一
- 保證跨越時間唯一
- 通過共享外部儲存或設定 Section ID,可實現全域性唯一
- 每秒可生成 1 億 ID
- 低 40 位即將用盡時自動獲取新的高 24 位
使用示例
import "github.com/edwingeng/wuid/redis"
// Setup
g := wuid.NewWUID("default", nil)
g.LoadH24FromRedis("127.0.0.1:6379", "", "wuid")
// Generate
for i := 0; i < 10; i++ {
fmt.Println(g.Next())
}
傳送門
https://github.com/edwingeng/wuid
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 分散式唯一 ID 生成器分散式
- 分散式唯一 ID 生成器 - IDGen分散式
- PHP產生一個唯一IDPHP
- Spring Boot 工程整合全域性唯一ID生成器 VestaSpring Boot
- 四個id 生成器效能比較記錄
- ULID 與 UUID:用於 JavaScript 的可排序隨機 ID 生成器UIJavaScript排序隨機
- 修改安卓ID為硬體唯一ID安卓
- js如何生成唯一識別符號UUIDJS符號UI
- 分散式唯一id生成策略分散式
- 預分配法生成唯一ID
- 分散式全域性唯一ID分散式
- 微服務之唯一ID生成策略微服務
- Python 根據id生成唯一碼Python
- python之uuid通用唯一識別符號模組PythonUI符號
- 探索 PHP 如何生成全域性唯一的 idPHP
- 分散式唯一ID的幾種生成方案分散式
- 框架篇:分散式全域性唯一ID框架分散式
- 【iOS】使用UUID+KeyChain記錄裝置唯一標識iOSUIAI
- Android開發 - UUID 類通用唯一識別符號解析AndroidUI符號
- 分散式ID系列(2)——UUID適合做分散式ID嗎分散式UI
- 移動端裝置唯一ID的生成規則
- 分散式系統唯一主鍵識別符號ID生成機制比較 - Encore分散式符號
- 生成分散式唯一ID的幾種解決方案分散式
- 探尋UUID的起源與奧秘:從時間戳到唯一標識UI時間戳
- PHP 實現 Snowflake 生成分散式唯一 IDPHP分散式
- 【高併發】之分散式全域性唯一 ID分散式
- UUID7與UUID4簡單比較UI
- 5 大分散式 ID 生成器優缺點簡單對比分散式
- 如何在Java服務中實現分散式ID生成:雪花演算法與UUID的對比Java分散式演算法UI
- 研究分散式唯一ID生成,看完這篇就夠分散式
- 講分散式唯一id,這篇文章很實在分散式
- 分散式唯一ID解決方案-雪花演算法分散式演算法
- 實用向—總結一些唯一ID生成方式
- 開發中常用工具 - 獲取裝置的唯一標識、UDID、UUID、keychain儲存UUID、判斷網路型別等UIAI型別
- 一行程式碼實現簡單的唯一定長ID的生成。行程
- 不能錯過的分散式ID生成器(Leaf ),好用的一批!分散式
- A replica with the same server_uuid/server_id as this replica has connected to the source;ServerUI
- 開源專案|Go 開發的一款分散式唯一 ID 生成系統Go分散式
- JS 專案拾粹 三: 唯一 ID 頭像圖片生成的 JS 庫JS