This is a submodule part of the Odyssey project. Please refer to the odyssey project for execution scripts. CMakeLists.txt is not maintained. Please use the CMakeLists.txt found in vasigavr1/odyssey to compile.
Kite is a replicated, RDMA-enabled Key-Value Store that enforces available Release Consistency. Kite implements a read/write/RMW API an uses:
- Eventual Store for relaxed reads & writes
- MW-ABD (simply called ABD) for releases & acquires (i.e. linearizable reads/writes)
- Classic Paxos for RMWs.
- All-aboard Paxos for RMWs as a configurable optimization
Eventual Store is a protocol that provides per-keu Sequential consistency. ES implements reads locally and incurs a broadcast round for writes.
ABD is an algorithm that implements linearizable reads and writes Writes incur 2 broadcast rounds and reads incur 1 broadcast round with an conditional second round.
Paxos is implemented as such:
- Classic Paxos (leaderless with 3 rtts) or All-aboard Paxos (leaderless 2 rtts)
- Key-granularity: Paxos commands to different keys do not interact
- With both release and acquire semantics
- Compare And Swaps can be weak: they can fail locally if the comparison fails locally
The protocol is implemented over UD Sends and Receives. All messages are batched.
The title of the project is inspired by this