一個實現 推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/goSnowFlake

Example

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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!