A threadsafe unique ID generator inspired by Twitter SnowFlake theory
根据 Twitter SnowFlake 算法, 实现的分布式线程安全 UID 生成器
- ThreadSafe unique id generator
- Green pluggable, without external storage like Redis or MySQL
- Suitable for distributed systems
- Implement Twitter's SnowFlake theory
+---------------+----------------+----------------+
|timestamp(ms)42 | worker id(10) | sequence(12) |
+---------------+----------------+----------------+
id = timestamp | workerid | sequence (eg. 1451063443347648410)
An unique ID contains 3 parts:
- a timestamp in nanosecond
- a worker ID
- a sequence number
go get github.com/zheng-ji/goSnowFlake
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 != nil {
fmt.Println(err)
} else{
fmt.Println(id)
}
}
}
Copyright (c) 2016 by zheng-ji released under MIT License.