A .NET Core implementation of the Raft consensus algorithm, designed for building distributed systems without external dependencies.
Rafty is an open-source implementation of the Raft consensus algorithm built with C# and .NET Core. It provides the foundational logic for achieving agreement in distributed systems, enabling features like leader election and log replication without external dependencies. The project was initially developed to support clustering in Ocelot, allowing it to persist state and act as a service discovery provider.
Developers building distributed systems or microservices in .NET who need a customizable consensus layer without relying on external databases or third-party software.
Rafty offers a pure .NET solution for Raft consensus, with a flexible interface-based design that allows full control over transport, logging, and state machine implementation. It integrates seamlessly into existing .NET projects and supports self-hosted deployments for complete autonomy.
Implementation of RAFT consensus in .NET core
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Built with C# and .NET Core, it integrates seamlessly into existing .NET projects without external dependencies, as highlighted in the README for use with frameworks like Ocelot.
Provides clear interfaces like ILog and IPeer, allowing developers to implement custom transport, logging, and state machines tailored to specific needs, as emphasized in the interface-driven philosophy.
Implements the essential Raft consensus logic for leader election and log replication, leaving non-core aspects to users, which keeps the implementation lean and focused on accuracy.
Includes in-memory implementations for testing and prototyping, enabling quick setup and experimentation without persistence, though not suitable for production.
The project is explicitly labeled as experimental, meaning it may have bugs, breaking changes, and lacks production readiness, as admitted in the README.
Users must implement all core interfaces from scratch, including transport and persistence, requiring significant development effort and distributed systems expertise.
Only provides in-memory examples, forcing teams to build and maintain their own production-ready components without comprehensive documentation or best practices.