Popularity
4.0
Growing
Activity
1.1
-
80
1
11
Programming language: Go
License: MIT License
Tags:
Miscellaneous
Latest version: v1.0.1
indigo alternatives and similar packages
Based on the "Miscellaneous" category.
Alternatively, view indigo alternatives based on common mentions on social networks and blogs.
-
golang-standards/project-layout
Set of common historical and emerging project layout patterns in the Go ecosystem. -
gopsutil
A cross-platform library for retrieving process and system utilization(CPU, Memory, Disks, etc). -
go.uuid
Implementation of Universally Unique Identifier (UUID). Supported both creation and parsing of UUIDs. -
base64Captcha
Base64captch supports digit, number, alphabet, arithmetic, audio and digit-alphabet captcha. -
go-restful-api
An idiomatic Go RESTful API starter kit following SOLID principles and Clean Architecture with a common project layout. -
cookiecutter-golang
A Go application boilerplate template for quick starting projects following production best practices. -
Tideland Go
The Tideland Go Library contains a larger set of useful Google Go packages for different purposes. -
shoutrrr
Notification library providing easy access to various messaging services like slack, mattermost, gotify and smtp among others. -
stats
Monitors Go MemStats + System stats such as Memory, Swap and CPU and sends via UDP anywhere you want for logging etc...
Get performance insights in less than 4 minutes
Scout APM uses tracing logic that ties bottlenecks to source code so you know the exact line of code causing performance issues and can get back to building a great product faster.
Sponsored
scoutapm.com
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of indigo or a related project?
Popular Comparisons
README
Indigo
About
- A distributed unique ID generator of using Sonyflake and encoded by Base58.
- Base58 logic is optimized unsigned int64.
- ID max length is 11 characters by unsigned int64 max value.
- An Encoder can change your original encoder ;)
Install
$ go get -u github.com/osamingo/indigo
Usage
package main
import (
"log"
"sync"
"time"
"github.com/osamingo/indigo"
)
var g *indigo.Generator
func init() {
t := time.Unix(1257894000, 0) // 2009-11-10 23:00:00 UTC
g = indigo.New(nil, indigo.StartTime(t))
_, err := g.NextID()
if err != nil {
log.Fatalln(err)
}
}
func main() {
wg := sync.WaitGroup{}
wg.Add(100)
for i := 0; i < 100; i++ {
go func() {
defer wg.Done()
id, err := g.NextID()
if err != nil {
log.Fatalln(err)
} else {
log.Println("ID:", id)
}
}()
}
wg.Wait()
}
Benchmark
# Machine: MacBook Pro (13-inch, 2018, Four Thunderbolt 3 Ports)
# CPU : 2.7 GHz Intel Core i7
# Memory : 16 GB 2133 MHz LPDDR3
BenchmarkEncoder_Encode-8 20000000 66.0 ns/op 46 B/op 1 allocs/op
BenchmarkEncoder_Decode-8 50000000 29.8 ns/op 0 B/op 0 allocs/op
PASS
ok github.com/osamingo/indigo/base58 2.930s
# Machine: MacBook Pro (13-inch, 2018, Four Thunderbolt 3 Ports)
# CPU : 2.7 GHz Intel Core i7
# Memory : 16 GB 2133 MHz LPDDR3
BenchmarkGenerator_NextID-8 50000 39175 ns/op 7 B/op 1 allocs/op
PASS
ok github.com/osamingo/indigo 8.548s
Bibliography
- Sonyflake - A distributed unique ID generator inspired by Twitter's Snowflake.
- Base58 - Base58 is a group of binary-to-text encoding schemes used to represent large integers as alphanumeric text.
License
Released under the MIT License.
*Note that all licence references and agreements mentioned in the indigo README section above
are relevant to that project's source code only.