一个实现 Twitter SnowFlake 算法 的 Go 分布式 UID 生成器

Go4Fun · · 3516 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

## [goSnowFlake](https://github.com/zheng-ji/goSnowFlake) [![Build Status](https://travis-ci.org/zheng-ji/goSnowFlake.svg)](https://travis-ci.org/zheng-ji/goSnowFlake) [![GoDoc](https://godoc.org/github.com/zheng-ji/goSnowFlake?status.svg)](https://godoc.org/github.com/zheng-ji/goSnowFlake) According to the Twitter SnowFlake Theory, A ThreadSafe Unique ID Generator written by Golang 根据 Twitter SnowFlake 算法, 实现的分布式线程安全 UID 生成器 ![snowflake.png](http://studygolang.qiniudn.com/160306/66d402a0734e016911822cd2240a2098.png) Feature -------- * 线程安全的 UID 生成器 * 绿色可插拔,无需依赖 Redis,Mysql,无状态 * 适合分布式系统 * 实现 Twitter SnowFlake 理论 Description ----------- ``` 0 41 51 64 +----------------------+--------------------+--------------------+ |timestamp(ms) | worker node id | sequence | +----------------------+--------------------+-------------------- + id = timestamp | workerid | sequence (eg. 1451063443347648410) ``` An id is composed by three part: timestamp in millon second, worker id, and sequence. Sequence is zero default. when timestamp is the same, we use sequence to avoid conflict Installation ------------- ``` go get github.com/zheng-ji/goSnowFlake ``` Example ------- ```go 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) } } } ``` Documentation ------------- - [Twitter Blog Reference](https://blog.twitter.com/2010/announcing-snowflake) - [Reddit Discuss](https://www.reddit.com/comments/cajap/twitter_announces_snowflake_a_distributed_unique/)

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3516 次点击  ∙  4 赞  
加入收藏 微博
1 回复  |  直到 2016-03-08 00:07:06
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传