yu31 / snowflake-go

Implementation of SnowFlake Algorighms

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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-go

Usage

package man

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

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

License:MIT License


Languages

Language:Go 84.0%Language:Makefile 16.0%