¿Qué es RPC y cómo resuelve problemas de latencia?
RPC, o Remote Procedure Call, es un protocolo de comunicación entre un cliente y un servidor que facilita invocar rutinas o subrutinas como si estuvieran implementadas localmente en el cliente. Este enfoque permite ocultar la complejidad del servidor al cliente, quien utiliza métodos como Client.setStudent
enviando parámetros de manera transparente. Aunque estos métodos están implementados en el servidor, se invocan desde el cliente como si fueran locales, reduciendo la percepción de latencia y mejorando la interacción entre ambos.
¿Cómo gRPC mejora la eficiencia de RPC?
Google desarrolló gRPC para mejorar la velocidad y rendimiento del tradicional RPC. Para lograr esto, gRPC incorpora las siguientes mejoras:
-
HTTP2 sobre HTTP1: El uso de HTTP2 permite la multiplexación de mensajes, utilizando una conexión TCP para enviar múltiples peticiones simultáneamente. Esto incrementa notablemente la velocidad de comunicación en comparación con HTTP1, que limita a texto plano.
-
Protobufers para intercambio de datos: gRPC utiliza protobufers para serializar y deserializar datos. Este mecanismo optimiza el intercambio de información al hacer más rápido y eficiente el proceso, en comparación con formas tradicionales como JSON.
¿Qué métodos ofrece gRPC para la transmisión de datos?
gRPC ofrece varios métodos que mejoran la transmisión de datos utilizando el paradigma de streaming:
-
Método unario: El cliente envía una única petición y recibe una única respuesta, similar a REST.
-
Streaming del lado del cliente: El cliente envía múltiples mensajes en una misma conexión, mientras el servidor responde una sola vez.
-
Streaming del lado del servidor: El cliente envía una sola petición y el servidor responde con múltiples mensajes en pequeñas partes.
-
Streaming bidireccional: Tanto el cliente como el servidor intercambian múltiples mensajes de manera continua y simultánea. No es obligatorio que la cantidad de mensajes intercambiados sea igual en ambas direcciones, ofreciendo gran flexibilidad en la gestión y respuesta de datos.
¿Cómo comparecen los protobufers con JSON?
Aunque JSON es el estándar común en la web y se usa frecuentemente en REST para el intercambio de datos, los protobufers presentan ciertas ventajas clave:
-
Compactación de datos: Los protobufers son más compactos y eficientes en términos de almacenamiento y velocidad de transmisión que JSON, debido a su naturaleza binaria.
-
Velocidad de procesamiento: Al ser precompilados, los protobufers reducen la sobrecarga de procesamiento en el cliente y el servidor, convirtiéndolo en una opción superior para sistemas donde el rendimiento es crucial.
-
Compatibilidad y extensibilidad: Los protobufers ofrecen una estructuración más robusta y fácil de mantener cuando se trata de cambios en el esquema de datos.
Aunque gRPC y protobufers demandan un aprendizaje adicional, su implementación puede ofrecer mejoras significativas en proyectos donde la eficiencia, velocidad y capacidad de manejo de grandes volúmenes de datos son críticos. Sin embargo, decidir entre JSON y protobufers puede depender de la naturaleza del proyecto, la infraestructura existente y las necesidades específicas del equipo de desarrollo.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?