Skip to content

kellabyte/holostore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HoloStore

 _     _  _____          _____  _______ _______  _____   ______ _______
 |_____| |     | |      |     | |______    |    |     | |_____/ |______
 |     | |_____| |_____ |_____| ______|    |    |_____| |    \_ |______
                                                                            

HoloStore is a distributed, strongly consistent key/value store built on the Accord consensus algorithm. It exposes a Redis compatible interface for simple benchmarking and integrates a durable commit log (WAL) + storage engine to make writes correct and crash safe.

What is Accord?

  • Accord is a leaderless consensus protocol.
  • It uses pre-accept → accept → commit phases with dependency tracking.
  • A fast path is possible when dependencies converge without conflicts.
  • Transactions are ordered per key via dependency sets, so unrelated writes can proceed in parallel without a single global leader.
  • Accord consensus protocol paper (CEP-15 draft whitepaper).

In this repository we implement:

  • A per partition Accord group with batched consensus RPCs.
  • A commit log (WAL) that persists committed entries and replays on restart.
  • An execution loop that applies committed commands to a state machine.
  • Range generation IDs that keep split/merge ownership changes safe during apply and WAL replay.
  • A Redis protocol surface for easy benchmarking.

Documentation

Build

make build-release

For allocator-specific performance runs:

make build-release-mimalloc

Meta-plane health

./target/release/holoctl --target 127.0.0.1:15051 meta-status
./target/release/holoctl --target 127.0.0.1:15051 controller-status
TARGET=127.0.0.1:15051 ./scripts/check_meta_plane_health.sh

# Prometheus-style metrics export from any node:
redis-cli -p 16379 HOLOMETRICS

Run a local 3-node cluster

./scripts/cleanup_cluster.sh
./scripts/start_cluster.sh

Benchmark with redis-benchmark

redis-benchmark -h localhost -p 16379 -c 50 -n 1000000 -r 100000 -P 100 -t get

====== GET ======
  1000000 requests completed in 1.76 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1
  multi-thread: no

Summary:
  throughput summary: 569,152.00 requests per second
  latency summary (msec):
          avg       min       p50       p95       p99       max
        8.721     4.504     7.271    13.479    39.615    52.735

Porcupine linearizability check

make check-linearizability

You can customize the workload via env vars:

NODES="127.0.0.1:16379,127.0.0.1:16380,127.0.0.1:16381" \
CLIENTS=3 KEYS=5 SET_PCT=50 DURATION=10s OP_TIMEOUT=10s FAIL_FAST=true \
./scripts/check_linearizability.sh

Notes

  • By default, the cluster starts on non-standard Redis ports (16379–16381).
  • The start script prefers target/release/holo-store if it exists.
  • You can override defaults via environment variables (batch sizes, shards, WAL persistence, etc.).

About

HoloStore is a distributed strongly-consistent key/value store built on the Accord consensus algorithm.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors