Skip to content
This repository was archived by the owner on May 28, 2023. It is now read-only.

yu31/snowflake

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

snowflake

==============

snowflake is a distributed unique ID generator inspired by Twitter's Snowflake.

A snowflake ID is composed of

41 bits for time in units of 10 msec
10 bits for a instance id
12 bits for a sequence number

Quick Started

Installation

$ go get -u github.com/yu31/snowflake

Usage

package man

import (
	"fmt"
	
	"github.com/yu31/snowflake"
)

func main() {
    // create a new worker
    instanceID := int64(1)
    worker, err := snowflake.New(instanceID)
    if err != nil {
        fmt.Printf("new snowflake fail: %v\n", err)
        return
    }
    
    // take id
    for i := 0; i < 8; i++ {
        id, err := worker.Next()
        if err != nil {
            fmt.Printf("generate id fail: %v\n", err)
            return
        }
        fmt.Printf("New ID: %d\n", id)
    }
	
    // take batch
    ids, err := worker.Batch(100)
    if err != nil {
        fmt.Printf("generate ids fail: %v\n", err)
        return
    }
    fmt.Println(ids)
}

About

Implementation of SnowFlake Algorighms

Resources

License

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors