Tipos de RPC
El tag de una trama determina el tipo de RPC. Todos los payloads son un tipo de openraft serializado con postcard.
| tag | Nombre | Payload de solicitud | Payload de respuesta | Papel |
|---|---|---|---|---|
1 | Vote | VoteRequest | VoteResponse | Elección de líder — un candidato pide el voto a otros nodos |
2 | AppendEntries | AppendEntriesRequest | AppendEntriesResponse | Replicación de log + heartbeat — el líder propaga comandos replicados a los seguidores |
3 | FullSnapshot | una tupla (Vote, SnapshotMeta, snapshot_bytes) | SnapshotResponse | Envía el snapshot completo a un nodo que se ha quedado atrás |
- Vote — cuando el líder muere, un nodo cuyo heartbeat se ha detenido se convierte en candidato y pide votos; el nodo que obtiene la mayoría se convierte en el nuevo líder.
- AppendEntries — el líder transporta los comandos de bloqueo a confirmar como entradas de log. Un AppendEntries sin entradas es el heartbeat — no hay ningún mensaje de heartbeat aparte.
- FullSnapshot — envía todo el estado actual a un nodo demasiado atrasado para ponerse al día vía el log (o uno que acaba de unirse). Se envía entero, en una sola trama, sin streaming.
Flujo — cuando el líder muere
Nodo A
Nodo B
Nodo C
detecta que el heartbeat del líder desapareció → se convierte en candidato
Vote · solicitando un voto
Vote · solicitando un voto
sí
mayoría incluyéndose a sí mismo → nuevo líder
AppendEntries (sin entradas = heartbeat)
AppendEntries (sin entradas = heartbeat)
RPC de consenso (Raft)
En cuanto llega el primer heartbeat del líder recién elegido, el clúster vuelve al servicio normal — el hueco total suele ser de 0,5-1 segundo. Consulta Comandos replicados para el flujo de AppendEntries (replicación de log) durante la operación normal.
Terminología
- Replicación de log (log replication) — el líder convierte sus comandos decididos en un log ordenado y hace que los seguidores lo registren tal cual. Aplicar el mismo log en el mismo orden lleva a todos los nodos al mismo estado.
- Heartbeat — una señal periódica de "estoy vivo". Cuando se detiene, los seguidores concluyen que el líder ha muerto e inician una elección.