Spice
Raft consensus y estado distribuido
Spice es el corazón del cluster. Implementa Raft consensus para mantener el estado distribuido — configuración, registry de servicios, elección de líder y replicación de datos. Es el equivalente de etcd en Kubernetes, pero integrado directamente en el binario de DuneStack.
Cómo funciona
- ✦Cada nodo del cluster ejecuta una instancia de Spice
- ✦Un nodo es elegido líder por consenso Raft
- ✦Todas las escrituras pasan por el líder y se replican a followers
- ✦Las lecturas pueden servirse desde cualquier nodo (eventual consistency) o solo del líder (strong consistency)
- ✦Si el líder cae, se elije uno nuevo en < 500ms
API
bash
# Estado del consenso
dune spice status
# Leader: arrakis-prod-01
# Term: 42
# Committed: 18,429
# Applied: 18,429
# Followers: 2/2 healthy
# Leer un valor
dune spice get /config/gateway/rate-limit
# 10000
# Escribir un valor (solo el líder procesa)
dune spice put /config/gateway/rate-limit 15000
# ✦ Written to leader, replicated to 2 followers
# Watch cambios en tiempo real
dune spice watch /config/
# [14:30:01] PUT /config/gateway/rate-limit = 15000
# [14:30:05] PUT /config/services/patient-api/replicas = 3Configuración
toml
# /etc/dune/spice.toml
[raft]
election_timeout = "300ms"
heartbeat_interval = "100ms"
snapshot_threshold = 10000
max_append_entries = 64
[storage]
data_dir = "/var/lib/dune/spice"
wal_dir = "/var/lib/dune/spice/wal"
[network]
bind = "0.0.0.0:7420"
advertise = "10.10.0.10:7420"Métricas
| MÉTRICA | DESCRIPCIÓN | VALOR TÍPICO |
|---|---|---|
| spice_raft_term | Término actual del líder | 42 |
| spice_commit_index | Último índice committed | 18,429 |
| spice_apply_latency_ms | Latencia de apply | < 1ms |
| spice_replication_lag | Lag de replicación | < 5ms |
| spice_snapshot_size_mb | Tamaño del último snapshot | 12 MB |