Expand description
§d-engine-core
Pure Raft consensus algorithm - for building custom Raft-based systems
§⚠️ Internal Crate - Not Ready for Standalone Use
Use d-engine instead.
This crate contains the pure Raft consensus algorithm used internally by d-engine. The API is unstable before v1.0.
# ❌ Don't use this directly
[dependencies]
d-engine-core = "0.2"
# ✅ Use this instead
[dependencies]
d-engine = "0.2"§For Contributors
§What this crate provides
This crate focuses solely on the Raft consensus algorithm:
- Leader Election - Automatic leader election with randomized timeouts
- Log Replication - Reliable log replication to followers
- Membership Changes - Dynamic cluster membership changes
- Snapshot Support - Log compaction via snapshots
Storage, networking, and state machine implementation are your responsibility.
Reference integration: See how d-engine-server uses this crate.
§Future Vision
Post-1.0 goal: Become a standalone Raft library with stable API.
Current status: Internal to d-engine, API may change between minor versions.
§Key Traits
StorageEngine- Persistent storage for Raft logsStateMachine- Application-specific state transitionsLogStore- Log entry persistenceMetaStore- Metadata persistence (term, voted_for)
§Documentation
For comprehensive guides:
Re-exports§
Modules§
- config
- Configuration management module for distributed Raft consensus engine.
- storage
- watch
- Watch mechanism for monitoring key changes
Structs§
- Append
Response With Updates - AppendEntries response with possible state changes
- Append
Result - Append
Results - Batch
Buffer - Cluster
Metadata - Cached cluster topology metadata for hot path optimization.
- Cluster
Update Result - Commit
Handler Dependencies - Default
Commit Handler - Default
Purge Executor - Default implementation using the configured log storage
- Default
State Machine Handler - Election
Handler - Leader
Info - Leader election information Used at: Application layer (internal Raft protocol notifications) Purpose: Notify applications about leader changes via watch channel Fields: Minimal - only what Raft protocol needs
- LogSize
Policy - Maybe
Clone Oneshot - Maybe
Clone Oneshot Receiver - Maybe
Clone Oneshot Sender - NewCommit
Data - Peer
Update - Raft
- Raft
Context - Raft
Core Handlers - Raft
Request With Signal - Request with response channel that can handle all Raft payload types
- Raft
Storage Handles - Replication
Data - Replication
Handler - Signal
Params - Snapshot
Context - Snapshot
Transfer Meta - Unified snapshot metadata with precomputed values
- State
Update - State transition data for election outcomes
- Stream
Response Sender - Vote
Result
Enums§
- Connection
Type - Consensus
Error - Convert
Error - Error type for value conversion operations
- Election
Error - Error
- File
Error - IdAllocation
Error - Membership
Error - Network
Error - Prost
Error - Wrapper for prost encoding/decoding errors
- Quorum
Status - Raft
Event - Read
Index Error - Errors that can occur during ReadIndex batching for linearizable reads
- Read
Send Error - Replication
Error - Role
Event - Serialization
Error - Snapshot
Error - Storage
Error - System
Error - Write
Send Error
Traits§
- Election
Core - Membership
- Purge
Executor - Defines the behavior for log entry compaction and physical deletion.
- Raft
Oneshot - Replication
Core - Core replication protocol operations
- Snapshot
Policy - State
Machine Handler - Transport
Functions§
- client_
command_ to_ entry_ payloads - Converts a vector of client WriteCommands into a vector of EntryPayloads. Each WriteCommand is serialized into bytes and wrapped in an EntryPayload::Command variant.
- ensure_
safe_ join - grpc_
task_ with_ timeout_ and_ exponential_ backoff - As soon as task has return we should return from this function