Xid:Go 輕量級 ID 生成器

在分佈式系統中,唯一 ID(GUID)是必不可少的,常見的方案包括 UUID、MongoDB ObjectID 和 Twitter Snowflake。其中 UUID 雖然通用,但長度較長,而 Snowflake 需要額外的機器 / 數據中心配置。

xid (github.com/rs/xid) 是一個基於 MongoDB ObjectID 算法的更輕量級、更高效的全局唯一 ID 生成庫,用於生成 12 字節的唯一 ID,特性:

Go 語言實現,適用於 分佈式系統、日誌追蹤、數據庫主鍵 等場景。

安裝

go get -u github.com/rs/xid

基本使用

guid := xid.New()
fmt.Println(guid.String())
 
// Output: 
// cus568ckm2g47f6e6rd0

獲取 ID 的元數據

fmt.Println(guid.Machine()) // 獲取機器 ID
fmt.Println(guid.Pid())     // 獲取進程 ID
fmt.Println(guid.Time())    // 獲取時間戳
fmt.Println(guid.Counter()) // 獲取計數器

ID 結構由 4 部分組成

這樣,同一秒內,每個進程最多可生成 16,777,216 個唯一 ID。其字符串表示形式採用 base32hex(無填充),長度爲 20 個字符,例如:cus568ckm2g47f6e6rd0

你在項目中是否使用 xid?歡迎分享你的經驗!😊


References
https://github.com/rs/xid

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/XmBJ3wmumZlqGDV7yxmfHg