stemedb/crates/stemedb-cluster/Cargo.toml
jordan afed95fe26 feat: Multi-node cluster coordination (Phase 6C)
Add stemedb-cluster crate implementing horizontal scaling:

- SWIM-based membership protocol for node discovery and failure detection
- Consistent hashing (jump hash) for subject-to-shard routing
- Range management with dynamic split (>64MB) and merge (<20MB) operations
- Stateless HTTP gateway for client request routing via axum
- Meta-range gossip merge for cluster-wide metadata propagation

Includes restrictive CORS policy, proper error propagation from routing,
replica cache invalidation on node failure, and 84 tests (57 unit + 27
integration). Raft MV coordination deferred per design decision.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 20:57:54 -07:00

64 lines
1.1 KiB
TOML

[package]
name = "stemedb-cluster"
version = "0.1.0"
edition = "2021"
description = "Multi-node cluster coordination for StemeDB"
# Inherit workspace lints
[lints]
workspace = true
[dependencies]
# Core types
stemedb-core = { path = "../stemedb-core" }
stemedb-storage = { path = "../stemedb-storage" }
stemedb-sync = { path = "../stemedb-sync" }
stemedb-rpc = { path = "../stemedb-rpc" }
# Async runtime
tokio = { version = "1", features = ["full"] }
# Error handling
thiserror = "1.0"
# Logging
tracing = "0.1"
# HTTP API (Gateway)
axum = "0.7"
tower = "0.5"
tower-http = { version = "0.5", features = ["cors", "trace"] }
# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
# Concurrent data structures
dashmap = "6"
parking_lot = "0.12"
# Hashing for sharding
blake3 = "1.5"
hex = "0.4"
# UUID for NodeId
uuid = { version = "1.0", features = ["v4", "serde"] }
# HLC timestamps
uhlc = "0.7"
# Random selection
rand = "0.8"
[[bin]]
name = "stemedb-node"
path = "src/bin/node.rs"
[dependencies.tracing-subscriber]
version = "0.3"
features = ["env-filter"]
[dev-dependencies]
tempfile = "3.10"
tokio-test = "0.4"