下面是一个用Go语言实现的雪花算法(Snowflake)的完整源码,支持生成全局唯一的64位ID。
雪花算法简介:
雪花算法最早由Twitter提出,用于生成分布式系统中的唯一ID。其64位ID结构如下:
符号位(1) 时间戳(41) 数据中心ID(5) 机器ID(5) 序列号(12)
1 41 5 5 12
符号位:1位,始终为0
时间戳:41位,毫秒级时间戳,通常是当前时间戳减去一个自定义的起始时间戳
数据中心ID:5位
机器ID:5位
序列号:12位,毫秒内自增
Go语言实现雪花算法
package main
import (
"fmt"
"sync"
"time