#raft-consensus #raft #distributed #distributed-consensus

inferadb-ledger-raft

Raft consensus and gRPC services for InferaDB Ledger

80 releases

Uses new Rust 2024

0.1.0-nightly.20260127 Jan 27, 2026
0.1.0-dev.20260315.100 Mar 15, 2026
0.1.0-dev.20260228 Feb 28, 2026

#1142 in Network programming

Download history 12/week @ 2026-01-25 381/week @ 2026-02-01 144/week @ 2026-02-08 114/week @ 2026-02-15 62/week @ 2026-02-22 132/week @ 2026-03-01 60/week @ 2026-03-08

369 downloads per month
Used in 2 crates (via inferadb-ledger-sdk)

MIT/Apache

4.5MB
86K SLoC

inferadb-ledger-raft

Raft consensus and gRPC services for InferaDB Ledger.

Overview

This crate provides the distributed consensus layer:

  • OpenRaft integration: Log storage backed by inferadb-ledger-store
  • gRPC services: Read, Write, Admin, Health, Discovery
  • Multi-Raft: Multiple Raft groups for shard isolation
  • Batching: Transaction batching for throughput optimization
  • Idempotency: Server-side deduplication cache

Services

Service Purpose
ReadService Entity/relationship queries, proofs
WriteService Transactions with Raft replication
AdminService Organization/vault management, cluster ops
HealthService Liveness and readiness checks
DiscoveryService Peer discovery via DNS

Usage

use inferadb_ledger_raft::{LedgerServer, BatchConfig};
use inferadb_ledger_state::StateLayer;
use std::time::Duration;

// Configure batching with builder pattern
let batch_config = BatchConfig::builder()
    .max_batch_size(100)
    .max_batch_delay(Duration::from_millis(5))
    .build();

let state = StateLayer::new(engine);
let server = LedgerServer::new(state, raft_config).await?;

// Start gRPC server
server.serve("[::]:50051").await?;

Architecture

gRPC Services
    │
BatchWriter (coalesces writes)
    │
OpenRaft (consensus)
    │
RaftLogStore + StateLayer (storage)

License

MIT OR Apache-2.0

Dependencies

~44–67MB
~1M SLoC