Clusterize your functionality and build your own replicated state machine using this completely extensible implementation of the Raft consensus algorithm in .NET.
- Control important functionality
- Extend
Coracle.Raft.Engine.Remoting.IOutboundRequestHandler
for Outbound Remote Operations without any restrictions on protocols and data-transfer formats - Extend
Coracle.Raft.Engine.Discovery.IDiscoveryHandler
for initial discovery of otherCoracle
nodes - Extend
Coracle.Raft.Engine.Command.IStateMachineHandler
for maintaining the State Machine, i.e your cluster's core state functionality - Extend
Coracle.Raft.Engine.States.IPersistentStateHandler
for managing crucial persistent properties, state snapshots, and the replicated log using any data storage technology
- Extend
- Supports configuration changes using the cited "Joint-Consensus" approach
- Supports quick catch-up of newly added nodes using InstallSnapshotRPC
- Fine-grained control over internal processing using
IEngineConfiguration
settings - Extensive and rich logging of all internal workflows
- Control log Level and integrate extensible Log sinks
- For consistency,
IActivityLogger
can be used again for capturing logs from implementations of the aforementioned handlers
- Easy DI registration
- To know more about RAFT, check out In Search of an Understandable Consensus Algorithm - Diego Ongaro and John Ousterhout, Stanford University
- To know more about how Coracle.Raft works and implements the algorithm, check out Coracle.Raft