LRPC: Comunicação Inter-Processo Mínima Sobrecarga
Lightweight Remote Procedure Call (LRPC) é um mecanismo IPC otimizado para comunicação baixa latência, mesma máquina ou rede de confiança, entre processo cliente e servidor. Ao contrário de RPC tradicional (DCOM, CORBA, gRPC), LRPC minimiza marshalling, context switches e configuração conexão.
Características Principais
- Simplicidade: Sem IDL, geração stubs, ou repositório interface. Assinaturas funções partilhadas via header/módulo.
- Eficiência: Frequentemente usa memória partilhada, filas lock-free, ou kernel fast-path (ex.: Windows LPC/ALPC, Linux vDSO, seL4 IPC).
- Assíncrono por Defeito: Cliente enfileira pedido, continua; servidor processa, posta resposta. Bloqueio thread não requerido.
- Sem Descoberta: Endpoints conhecidos em tempo compilação/deploy (nomes porta, capability pointers).
- Segurança via Capabilities: Acesso controlado por tokens inforjáveis (handles, capabilities), não ACLs.
Casos Uso Típicos
- Syscalls microkernel (seL4, Zircon, QNX).
- High-frequency trading: user-space ↔ kernel bypass.
- Sandbox browser: renderer ↔ broker process (Chrome Mojo, Firefox IPDL).
- Sistemas embarcados: core ↔ tarefas periféricas.
- Game engines: render thread ↔ main thread command buffers.
Contraste com RPC Tradicional
| Aspeto | RPC Tradicional | LRPC |
| Marshalling | Serialização completa (protobuf, JSON) | Zero-copy / memória partilhada |
| Latência | 10–100 µs | 0,1–2 µs |
| Acoplamento | Solto (contract-first) | Apertado (definições partilhadas) |
| Transparência Rede | Sim | Geralmente apenas local |
LRPC troca generalidade por velocidade. Use quando caller/callee co-localizados, confiam um no outro, e frequência chamadas alta (10K–1M+/seg).