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

本文介绍了一个基于Golang实现的Snowflake算法ID生成器,详细解析了算法的bit结构,包括1位固定为0的符号位,41位时间戳,5位数据中心ID,5位工作进程ID,以及12位序列号。通过引入该IDWorker,可以在一毫秒内生成4096个全局唯一的非连续ID。
最低0.47元/天 解锁文章
894

被折叠的 条评论
为什么被折叠?



