feat: Implement Rocksdb
log storage
#124
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This code introduces the implementation of a Raft storage engine using RocksDB for persisting logs, snapshots, and state. The
RocksDBStorage
struct is designed to handle Raft logs, making it suitable for distributed systems requiring consensus. Key functionalities include:append
method is responsible for storing Raft entries (logs) in RocksDB, with the Raft log index used as the key.hard_state
andconf_state
methods are provided for retrieving and persisting the hard state and configuration state of Raft nodes.create_snapshot
andapply_snapshot
methods handle the creation and application of Raft snapshots, ensuring that the state is persisted in the event of failures or leader changes.compact
method provides log compaction functionality, removing older log entries no longer needed by the Raft consensus algorithm.entries
,first_index
, andlast_index
allow efficient retrieval of log entries, terms, and indices.Features