当前位置: 首页 > 工具软件 > go-snowflake > 使用案例 >

golang实现基于snowflake算法的ID生成器

姬庆
2023-12-01

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()
 类似资料: