Charm is a distributed key-value store. It is built on top of the Raft consensus algorithm and is written in Rust.
- Linearizable reads and writes
- Idempotent writes (exactly-once semantics)
- Fault-tolerant for up to
n/2 - 1
failures - Automated leader election, with requests forwarded to the leader
- Read-only optimization (Read Index)
- Snapshotting
- Joint consensus for cluster membership changes
- Multi-raft
- Deterministic simulation
- Crash resilience
- Network partition resilience
Charm exposes a GRPC API for interacting with the cluster, available in proto/charm.proto
.
See the arguments in src/bin/charm.rs
for the available options.