go 基于推特雪花算法生成定长id
基于推特雪花算法生成定长id,属于int64类型。
1 Bit Unused | 41 Bit Timestamp | 10 Bit NodeID | 12 Bit Sequence ID
1 bit
未使用,默认是0。
41bit
存储毫秒级时间戳,当前时间与Nov 04 2010 01:42:54 UTC的时间差。
10bit
存储节点的id,最多支持1024个。
12bit
自增id,同1个节点在1秒内最多生成id数量是4096。
同1个节点,1秒内最多生成4096*1000个id即400多万个。
package main
import (
"fmt"
"strconv"
"github.com/bwmarrin/snowflake"
)
func main() {
// 指定node id是1
node, err := snowflake.NewNode(1)
if err != nil {
fmt.Println(err)
return
}
id := node.Generate()
fmt.Println(id)
// 36是strconv.FormatInt支持的最大进制数
fmt.Println(strconv.FormatInt(int64(id), 36))
}