Suuchi
Having inspired from tools like Uber's Ringpop and a strong desire to understand how distributed systems work - Suuchi was born.
Suuchi is toolkit to build distributed data systems, that uses gRPC under the hood as the communication medium. The overall goal of this project is to build pluggable components that can be easily composed by the developer to build a data system of desired characteristics.
This project is in beta quality and it's currently running couple of systems in production setting @indix. We welcome all kinds of feedback to help improve the library.
Latest versions
Dependencies
Maven
<dependency>
<groupId>in.ashwanthkumar</groupId>
<artifactId>suuchi-core</artifactId>
<version>${suuchi.version}</version>
</dependency>
SBT
libraryDependencies += "in.ashwanthkumar" % "suuchi-core" % suuchiVersion
Releases are published to Sonatype release repository that eventually gets mirrored to Maven Central.
Development snapshots are available in Sonatypes's snapshot repository.
Features
- Enable partitioning of data using Consistent Hashing
- Supports synchronous replication to desired number of nodes
- Supports Reduce - Re-Reduce style aggregation for methods that can be expressed using a SemiGroup.
- Enables above set of features for any gRPC based service definitions
If you are a developer looking to use Suuchi, head over to Quick Start guide to get started.
Recipes
Internals
We try to document the internal workings of some core pieces of Suuchi for developers interested in contributing or understanding their systems better.
Presentations
Following presentations / videos explain motivation behind Suuchi
- Video by @brewkode on Suuchi - Toolkit to build distributed systems at Fifth Elephant, 2017.
- Suuchi - Distributed Systems Primitives
- Suuchi - Application Layer Sharding
- Suuchi - Distributed Data Systems Toolkit