Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,34 @@ let enhanced = layer.forward(&query, &neighbors, &weights);
| **Snapshots** | Point-in-time backups, incremental | Disaster recovery |
| **Cluster Metrics** | Prometheus-compatible monitoring | Observability at scale |

```bash
cargo add ruvector-raft ruvector-cluster ruvector-replication
```

```rust
use ruvector_raft::{RaftNode, RaftNodeConfig};
use ruvector_cluster::{ClusterManager, ConsistentHashRing};
use ruvector_replication::{SyncManager, SyncMode};

// Configure a 5-node Raft cluster
let config = RaftNodeConfig {
node_id: "node-1".into(),
cluster_members: vec!["node-1", "node-2", "node-3", "node-4", "node-5"]
.into_iter().map(Into::into).collect(),
election_timeout_min: 150, // ms
election_timeout_max: 300, // ms
heartbeat_interval: 50, // ms
};
let raft = RaftNode::new(config);

// Auto-sharding with consistent hashing (150 virtual nodes per real node)
let ring = ConsistentHashRing::new(64, 3); // 64 shards, replication factor 3
let shard = ring.get_shard("my-vector-key");

// Multi-master replication with conflict resolution
let sync = SyncManager::new(SyncMode::SemiSync { min_replicas: 2 });
```

### AI & ML

| Feature | What It Does | Why It Matters |
Expand Down
53 changes: 53 additions & 0 deletions tests/integration/distributed/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Ruvector Distributed Node Dockerfile
FROM rust:1.87-slim-bookworm AS builder

# Install build dependencies
RUN apt-get update && apt-get install -y \
pkg-config \
libssl-dev \
curl \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /app

# Copy workspace files
COPY Cargo.toml Cargo.lock ./
COPY crates/ ./crates/
COPY examples/ ./examples/

# Build release binaries
RUN cargo build --release -p ruvector-raft -p ruvector-cluster -p ruvector-replication

# Runtime stage
FROM debian:bookworm-slim

RUN apt-get update && apt-get install -y \
ca-certificates \
curl \
netcat-openbsd \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /app

# Copy built binaries
COPY --from=builder /app/target/release/libruvector_raft.rlib ./
COPY --from=builder /app/target/release/libruvector_cluster.rlib ./
COPY --from=builder /app/target/release/libruvector_replication.rlib ./

# Copy the node runner script
COPY tests/integration/distributed/node_runner.sh ./
RUN chmod +x node_runner.sh

# Environment variables
ENV NODE_ID=""
ENV NODE_ROLE="follower"
ENV RAFT_PORT=7000
ENV CLUSTER_PORT=8000
ENV REPLICATION_PORT=9000
ENV CLUSTER_MEMBERS=""
ENV SHARD_COUNT=64
ENV REPLICATION_FACTOR=3

EXPOSE 7000 8000 9000

CMD ["./node_runner.sh"]
27 changes: 27 additions & 0 deletions tests/integration/distributed/Dockerfile.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Ruvector Test Runner Dockerfile
FROM rust:1.87-slim-bookworm

# Install build dependencies
RUN apt-get update && apt-get install -y \
pkg-config \
libssl-dev \
curl \
&& rm -rf /var/lib/apt/lists/*

WORKDIR /app

# Copy workspace files
COPY Cargo.toml Cargo.lock ./
COPY crates/ ./crates/
COPY examples/ ./examples/
COPY tests/ ./tests/

# Pre-build test dependencies
RUN cargo build --tests -p ruvector-raft -p ruvector-cluster -p ruvector-replication

# Environment variables
ENV CLUSTER_NODES=""
ENV TEST_ITERATIONS=10000
ENV RUST_LOG=info

CMD ["cargo", "test", "-p", "ruvector-raft", "-p", "ruvector-cluster", "-p", "ruvector-replication", "--", "--nocapture"]
Loading
Loading