Lightweight Remote Procedure Call (LRPC) spiegato
LRPC: Comunicazione interprocesso a overhead minimo
Lightweight Remote Procedure Call (LRPC) è un meccanismo IPC ottimizzato per comunicazione a bassa latenza, stessa macchina o rete fidata tra un processo client e server. A differenza del RPC tradizionale (DCOM, CORBA, gRPC), l'LRPC minimizza marshalling, cambi di contesto e configurazione della connessione.
Caratteristiche chiave
- Semplicità: Nessun IDL, generazione stub o repository interfacce. Le firme delle funzioni condivise tramite header/modulo.
- Efficienza: Spesso usa memoria condivisa, code senza lock o percorso veloce del kernel (es. Windows LPC/ALPC, Linux vDSO, seL4 IPC).
- Asincrono per default: Il client mette in coda la richiesta, continua; il server elabora, pubblica la risposta. Nessun blocco del thread richiesto.
- Nessuna scoperta: Gli endpoint noti al momento della compilazione/distribuzione (nomi porta, puntatori capacità).
- Sicurezza tramite capacità: Accesso controllato da token non falsificabili (handle, capacità), non ACL.
Casi d'uso tipici
- Syscall microkernel (seL4, Zircon, QNX).
- Trading ad alta frequenza: spazio utente ↔ bypass kernel.
- Sandbox browser: renderer ↔ processo broker (Chrome Mojo, Firefox IPDL).
- Sistemi embedded: core ↔ attività periferiche.
- Motori di gioco: thread render ↔ thread principale buffer di comando.
Contrasto con il RPC tradizionale
| Aspetto | RPC tradizionale | LRPC |
|---|---|---|
| Marshalling | Serializzazione completa (protobuf, JSON) | Zero-copy / memoria condivisa |
| Latenza | 10–100 µs | 0,1–2 µs |
| Accoppiamento | Lasso (contratto-prima) | Stretto (definizioni condivise) |
| Trasparenza di rete | Sì | Di solito solo locale |