美文网首页
基于go的雪花算法--分布式ID生成

基于go的雪花算法--分布式ID生成

作者: Hmcf | 来源:发表于2019-11-18 16:37 被阅读0次

    github 地址https://github.com/bwmarrin/snowflake

    获取包:

    go get github.com/bwmarrin/snowflake
    

    关于雪花算法的说明在 算法/雪花算法 目录中有详细说明。

    代码实例:

    package main
    
    import (
        "fmt"
    
        "github.com/bwmarrin/snowflake"
    )
    
    func main() {
    
        // Create a new Node with a Node number of 1
        node, err := snowflake.NewNode(1)
        if err != nil {
            fmt.Println(err)
            return
        }
    
        // Generate a snowflake ID.
        id := node.Generate()
    
        // Print out the ID in a few different ways.
        fmt.Printf("Int64  ID: %d\n", id)
        fmt.Printf("String ID: %s\n", id)
        fmt.Printf("Base2  ID: %s\n", id.Base2())
        fmt.Printf("Base64 ID: %s\n", id.Base64())
    
        // Print out the ID's timestamp
        fmt.Printf("ID Time  : %d\n", id.Time())
    
        // Print out the ID's node number
        fmt.Printf("ID Node  : %d\n", id.Node())
    
        // Print out the ID's sequence number
        fmt.Printf("ID Step  : %d\n", id.Step())
    
        // Generate and print, all in one.
        fmt.Printf("ID       : %d\n", node.Generate().Int64())
    }
    



    源码中有一段关于起始时间的设置说明(默认为2010-01-04 01:42:54):

    // Epoch is set to the twitter snowflake epoch of Nov 04 2010 01:42:54 UTC in milliseconds
    // You may customize this to set a different epoch for your application.
    Epoch int64 = 1288834974657

    可以自定义修改设置。

    相关文章

      网友评论

          本文标题:基于go的雪花算法--分布式ID生成

          本文链接:https://www.haomeiwen.com/subject/iasbictx.html