id_generator 分布式64bit ID生成器 id_generator

HaroldHoo2018-03-23 10:41:10 • 2708 次点击    
这是一个分享于 2018-03-23 10:41:10 的项目,其中的信息可能已经有所发展或是发生改变。

项目github

https://github.com/HaroldHoo/id_generator

相关文章

https://www.yaolong.me/2017/10/id-generator/

id_generator

Layout

         |<----timestamp---->|<-----ExtraID----->|
layout:  [-------------------|----|------|-------]
         64                  32                  0


         |<InstID>|<-DataID->|<---NextID--->|
ExtraID: [--------|----------|--------------]
         32       24         14             0

InstID:  Machine Instance ID, like IP, 8bit.
          (可配置的,机器或实例ID,比如IP末位等)
DataID:  Data ID, like Mysql table ID Or UserID, 10bit.
          (可配置的,数据ID,比如分表的ID、用户ID等)
NextId:  A Increment Number in the same second, 14bit.
          (自生成的,每秒内增序数,以保证唯一)

Example

import "github.com/HaroldHoo/id_generator"
// Machine Instance ID, like IP, 8bit (全局设置8bit的机器ID)
id_generator.DefaultInstanceId = 154

// Data ID, like Mysql table ID, 10bit (设置10bit的数据ID)
var dataID = uint64(256)

// generate (生成ID)
id,_ := id_generator.NextId(dataID)

Unique id generator via golangRead More

Latest commit to the master branch on 3-27-2018
Download as zip
授权协议:
开发语言:
go 查看源码»
2708 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传