github链接: https://github.com/gitstliu/go-id-worker
Snowflake 算法是Twitter的分布式ID自增算法,用于生成可以跨数据中心的全局唯一ID(不连续)。
SnowFlake算法生成id的结果是一个64bit大小的整数。
1位 ,不用。固定是0
41位 ,记录毫秒级时间戳
5位 ,数据中心ID (用于对数据中心进行编码)
5位 ,WORKERID (用于对工作进程进行编码)
12位 ,序列号。用于同一毫秒产生ID的序列
所以理论上一个WORKER一毫秒最多能产生2的12次方个ID(一般来说足够用了)。
import (
"github.com/gitstliu/go-id-worker"
)
currWoker := &idworker.IdWorker{}
currWoker.InitIdWorker(1000, 1)
newId := currWoker.NexiId()