A strongly consistent distributed key-value store utilizing the Kompcis framework
The system relies on two types of nodes to function:
- a coordinator node for managing the routing, partitioning, and reconfiguration (currently unimplemented)
- one or more data nodes which receive requests from the coordinator and decide with their partition on the sequence of events< using a total order broadcast abstraction
Kompics enables systems to be built using modular Lego-like builing blocks. At the base of the layers of abstractions you'll find the Timer and Network components.
Core Kompics component capable of signalling to dependent components when intervals and durations pass. Useful for scheduling heartbeats, timeouts, and repeated tasks.
Core Kompics component that abstracts away the underlying network protocols and point-to-point communcation setup. Enables distributed components to send and receive serialized messages across the network.
Failure detector which operates correctly under the partially synchronous model by suspecting dead nodes and restoring susicions when detecting alive nodes.
The EPFD broadcasts and responds to heartbeat requests at scheduled timeouts, scaling up the timeout interval each time a node is incorrectly suspected of being dead.
Leader electing algorithm which requires an EPFD implementation. Each time the EPFD signals a node liveness change, the ELD updates the set of suspected nodes and chooses the new leader to be the node with the highest pre-computed rank.
Because the node ranks are determined during the system bootstrap phase (and because the designs do not support dynamic reconfiguration), the newly elected leader is guaranteed to eventually be chosen across all participating nodes.
Consensus algorithm for ensuring that all nodes within a replication group agree on the same operations in the same order, thus ensuring strong consistency.
Communcation wrapper around ASC to ensure that agreed-upon messages get sent across the network and delivered to the application.
- Johan Mickos (jarlopez)
- Khaled Jendi (jSchnitzer1)