An example use-case of Coracle.Raft - the completely extensible implementation of the Raft consensus algorithm in .NET
Coracle.Raft.Engine.Command.ICommand
andCoracle.Raft.Engine.Command.IStateMachineHandler
are implemented for keeping track of "notes" or any string key-value pairs- Namespace
Coracle.Raft.Examples.Registrar
exposes interfaces for service discovery and storage of enrolled nodes Coracle.Raft.Engine.Command.IPersistentStateHandler
is implemented for all data operations. For understanding purposes, an in-memory extension was adopted. All expected operations are covered - inclusive of snapshot management, compaction, handling the replicated log chain etc
Additionally, the projects Coracle.Web.Examples and Coracle.Web.Examples.Discovery implement the following
Coracle.Raft.Engine.Remoting.IOutboundRequestHandler
is extended to use HTTP Web APIs for cross-node communication.Coracle.Raft.Engine.Discovery.IDiscoveryHandler
is extended to use a discovery server for initial cluster identification.
- To know more about how Coracle.Raft is used here, check out this article - Extensible Raft Consensus algorithm in .NET