Estructura de trama
El framing binario con prefijo de longitud que transporta los RPC de Raft. A diferencia de las tramas del protocolo de cliente terminadas en \n, aquí se envía primero la longitud y luego se leen exactamente esos bytes. Los pares solicitud-respuesta en una conexión se suceden de forma secuencial, y el lado que llama (dial) es siempre el solicitante.
Solicitud (quien llama → quien recibe)
Estructurarefresh
Respuesta (quien recibe → quien llama)
Estructurarefresh
| Campo | Tamaño | Contenido |
|---|---|---|
tag | u8 | Tipo de RPC — consulta Tipos de RPC (solo en la solicitud) |
len | u32, big-endian | Longitud en bytes del payload que sigue |
payload | len bytes | Un tipo de openraft serializado en formato postcard |
Reglas de gestión de la conexión
lentiene un límite de 64 MiB (comprobado al recibir). Cualquier trama que lo supere, una trama malformada, untagdesconocido o un error de procesamiento de Raft se gestionan todos cerrando la conexión — el lado que llama (openraft) se reconecta y reintenta.- El lado que llama reutiliza una conexión por nodo de destino. Ante un error de E/S, o si un ciclo de solicitud-respuesta se cancela a medias, esa conexión se descarta y se establece una nueva en la siguiente llamada — un flujo leído a medias nunca se reutiliza en un estado desalineado.
Terminología
- Prefijo de longitud (length-prefix) — framing que envía primero la longitud del cuerpo, y luego lee exactamente esa cantidad de bytes. No hace falta ningún delimitador como
\n, así que puede transportarse cualquier dato binario tal cual. - Serialización — convertir una estructura en memoria en una secuencia de bytes apta para el transporte.
- RPC (llamada a procedimiento remoto) — un par solicitud-respuesta que llama a una función de otro servidor a través de la red, como si se llamara localmente.