Appel de procédure distant léger (LRPC) expliqué
LRPC : Communication inter-processus minimal-overhead
Lightweight Remote Procedure Call (LRPC) est un mécanisme IPC optimisé pour communication faible latence, même machine ou réseau de confiance, entre processus client et serveur. Contrairement RPC traditionnel (DCOM, CORBA, gRPC), LRPC minimise marshaling, changements contexte, et mise en place connexion.
Caractéristiques clés
- Simplicité : Pas IDL, génération stubs, ni répertoire interfaces. Signatures fonctions partagées via header/module.
- Efficacité : Souvent utilise mémoire partagée, files lock-free, ou fast-path noyau (ex. Windows LPC/ALPC, Linux vDSO, seL4 IPC).
- Asynchrone par défaut : Client enfile requête, continue ; serveur traite, poste réponse. Pas blocage thread requis.
- Pas découverte : Points finaux connus compilation/déploiement (noms ports, pointeurs capacités).
- Sécurité via capacités : Contrôle accès par jetons inforgables (handles, capabilities), pas ACLs.
Cas d'usage typiques
- Syscalls microkernel (seL4, Zircon, QNX).
- Trading haute fréquence : user-space ↔ kernel bypass.
- Sandbox navigateur : renderer ↔ processus broker (Chrome Mojo, Firefox IPDL).
- Systèmes embarqués : cœur ↔ tâches périphériques.
- Moteurs jeu : render thread ↔ main thread command buffers.
Contraste RPC traditionnel
| Aspect | RPC traditionnel | LRPC |
|---|---|---|
| Marshaling | Sérialisation complète (protobuf, JSON) | Zero-copy / mémoire partagée |
| Latence | 10–100 µs | 0,1–2 µs |
| Couplage | Faible (contract-first) | Fort (définitions partagées) |
| Transparence réseau | Oui | Généralement local seulement |
LRPC échange généralité pour vitesse. Utilisez quand appelant/appelé co-localisés, se font confiance, et fréquence appels élevée (10K–1M+/sec).
