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))
}

posted on 2024-10-17 09:20  王景迁  阅读(7)  评论(0编辑  收藏  举报

导航