Estrutura do Quadro
O enquadramento binário com prefixo de comprimento que carrega os RPCs Raft. Diferente dos quadros terminados em \n do protocolo do cliente, o comprimento é enviado primeiro e então essa quantidade de bytes é lida. Os pares de requisição-resposta em uma conexão vão e voltam sequencialmente, e o lado que disca é sempre o requisitante.
Requisição (quem disca → quem recebe)
Estruturarefresh
Resposta (quem recebe → quem disca)
Estruturarefresh
| Campo | Tamanho | Conteúdo |
|---|---|---|
tag | u8 | Tipo de RPC — veja Tipos de RPC (apenas na requisição) |
len | u32, big-endian | Comprimento em bytes do payload que segue |
payload | len bytes | Um tipo do openraft serializado no formato postcard |
Regras de Gerenciamento de Conexão
lentem um limite de 64 MiB (verificado ao receber). Qualquer quadro acima do limite, um quadro malformado, umtagdesconhecido, ou um erro de processamento do Raft são todos tratados fechando a conexão — o lado que disca (openraft) reconecta e tenta novamente.- O lado que disca reutiliza uma conexão por nó de destino. Em caso de erro de I/O, ou se uma ida e volta é cancelada no meio do caminho, essa conexão é descartada e uma nova é discada na próxima chamada — um stream lido pela metade nunca é reutilizado em um estado desalinhado.
Terminologia
- Prefixo de comprimento (length-prefix) — enquadramento que envia o comprimento do corpo primeiro, depois lê exatamente essa quantidade de bytes. Nenhum delimitador como
\né necessário, então dados binários arbitrários podem ser carregados como estão. - Serialização — transformar uma estrutura em memória em uma sequência de bytes adequada para transporte.
- RPC (chamada de procedimento remoto) — um par requisição-resposta que chama uma função em outro servidor pela rede, como se a estivesse chamando localmente.