一個實現 推ter SnowFlake 算法 的 Go 分布式 UID 生成器
來自: https://segmentfault.com/a/1190000004548112
goSnowFlake
根據 推ter SnowFlake 算法, 實現的分布式線程安全 UID 生成器
Feature
-
線程安全的 UID 生成器
-
綠色可插拔,無需依賴 Redis,Mysql,無狀態
-
適合分布式系統
-
實現 推ter SnowFlake 理論
Description
0 41 51 64 +---------------+----------------+-----------+ |timestamp(ms) | worker node id | sequence | +---------------+----------------+-----------+id = timestamp | workerid | sequence (eg. 1451063443347648410)</pre>
由三部分與運算組合而成,分別是毫秒級別的時間戳,機器 workerid, 以及為了解決沖突的序列號
Installation
go get github.com/zheng-ji/goSnowFlakeExample
import ( "fmt" "github.com/zheng-ji/goSnowFlake" )func main() { // Params: Given the workerId, 0 < workerId < 1024 iw, err := goSnowFlake.NewIdWorker(1) if err!= nil { fmt.Println(err) } for i := 0; i < 100; i++ { if id, err := iw.NextId(); err != nill { fmt.Println(id) } } }</pre>
Documentation
License
Copyright (c) 2015 by zheng-ji released under MIT License.
</div> 本文由用戶 gaoxuzhao 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!