Go实现雪花算法
一个简单的雪花算法的Go实现
需要的小伙伴直接拿去用就可以了。可以比较简单,一些数据你可以根据需要自定义就行了:
- 机器ID位数:没必要必须10位
- 开始时间戳:设置一个自己喜欢的,业务允许你只需要一天、一月的时间范围。42位也不是必须的。
- 序列所占位数,每msid范围,根据需要调整吧。
总得来说:除去第一个0是正负位不能变,其他63位,根据需要进行划分、组合,可以打进去很多信息,算法设计肯定很好,更多的希望你根据需要自我调整。
``
package main
import (
"fmt"
"sync"
"errors"
"time"
)
// 定义基本变量,雪花算法,时间戳,机器id,以及二者偏移量
const (
twepoch = int64(1483228800000) //开始时间戳(根据实际情况考虑)
workidBits = uint(4) // 机器id所占用位数
sequenceBits = uint(18) // 序列所占位数
workeridMax = int64(-1 ^ (-1 << workidBits)) //最大机器id
sequenceMask = int64(-1 ^ (-1 << se