https://github.com/ckatsak/lfchring
In-memory immutable wait-free consistent hashing ring data structure, supporting virtual nodes & replication.
https://github.com/ckatsak/lfchring
concurrent concurrent-data-structure consistent-hash-algorithm consistent-hashing consistent-hashing-library consistenthash golang golang-library golang-package hash-ring hashring lock-free multiple-readers replication single-writer wait-free
Last synced: 2 months ago
JSON representation
In-memory immutable wait-free consistent hashing ring data structure, supporting virtual nodes & replication.
- Host: GitHub
- URL: https://github.com/ckatsak/lfchring
- Owner: ckatsak
- License: apache-2.0
- Created: 2017-12-22T03:15:15.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-03-14T12:30:18.000Z (about 8 years ago)
- Last Synced: 2024-06-20T10:14:56.592Z (almost 2 years ago)
- Topics: concurrent, concurrent-data-structure, consistent-hash-algorithm, consistent-hashing, consistent-hashing-library, consistenthash, golang, golang-library, golang-package, hash-ring, hashring, lock-free, multiple-readers, replication, single-writer, wait-free
- Language: Go
- Homepage: https://godoc.org/github.com/ckatsak/lfchring
- Size: 39.1 KB
- Stars: 3
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# lfchring
[](https://goreportcard.com/report/github.com/ckatsak/lfchring)
[](https://godoc.org/github.com/ckatsak/lfchring)
[](http://gocover.io/github.com/ckatsak/lfchring)
Package lfchring provides a *wait-free* consistent hashing ring immutable
in-memory data structure, designed for very efficient frequent reading by
**multiple readers** and less frequent updates by a **single writer**.
It features efficient handling of a static number of virtual ring nodes per
distinct ring node, as well as auto-managed data replication information
(using a static replication factor).
It also allows users to pass the hash function of their choice, further
improving its flexibility.
The API is simple, easy to use, and is documented in
[godoc](https://godoc.org/github.com/ckatsak/lfchring).
It has no external dependencies.