Categorygithub.com/zheng-ji/gosnowflake
modulepackage
0.0.0-20180906112711-fc763800eec9
Repository: https://github.com/zheng-ji/gosnowflake.git
Documentation: pkg.go.dev

# README

goSnowFlake

Build Status GoDoc

A threadsafe unique ID generator inspired by Twitter SnowFlake theory

根据 Twitter SnowFlake 算法, 实现的分布式线程安全 UID 生成器

goSnowFlake

Feature

  • ThreadSafe unique id generator
  • Green pluggable, without external storage like Redis or MySQL
  • Suitable for distributed systems
  • Implement Twitter's SnowFlake theory

Description

+---------------+----------------+----------------+
|timestamp(ms)42  | worker id(10) | sequence(12)  |
+---------------+----------------+----------------+

id  = timestamp | workerid | sequence (eg. 1451063443347648410)

An unique ID contains 3 parts:

  • a timestamp in nanosecond
  • a worker ID
  • a sequence number

Installation

go get github.com/zheng-ji/goSnowFlake

Example

import (
	"fmt"
	"github.com/zheng-ji/goSnowFlake"
)

func main() {
    // Params: Given the workerId, 0 < workerId < 1024
	iw, err := goSnowFlake.NewIdWorker(1) 
	if err!= nil {
		fmt.Println(err)
	}
	for i := 0; i < 100; i++ {
		if id, err := iw.NextId(); err != nil {
            fmt.Println(err)
        } else{
            fmt.Println(id)
        }
	}
}

Documentation

License

Copyright (c) 2016 by zheng-ji released under MIT License.

# Packages

No description provided by the author

# Functions

NewIdWorker Func: Generate NewIdWorker with Given workerid.
ParseId Func: reverse uid to timestamp, workid, seq.

# Constants

No description provided by the author
equal as getMaxWorkerId().
Num of Sequence Bits.
equal as getSequenceMask().
No description provided by the author
Num of WorkerId Bits.
No description provided by the author

# Structs

IdWorker Struct.