No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

RPC y gRPC: Protocolos para Comunicación Eficiente entre Servicios

6/22
Recursos

¿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:

  1. 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.

  2. 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:

  1. Método unario: El cliente envía una única petición y recibe una única respuesta, similar a REST.

  2. Streaming del lado del cliente: El cliente envía múltiples mensajes en una misma conexión, mientras el servidor responde una sola vez.

  3. 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.

  4. 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.

Aportes 2

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Remote Procedure Call (RPC): protocolo que oculta la implementación en el backend de la petición que hizo un cliente, aunque el cliente sepa como hacer la petición y pueda invocarla como si fuese suya.

gRPC: framework creado por Google para trabajar RPC con más eficiencia y alto rendimiento.

  • El transporte de datos funciona con HTTP2.
    • Permite crear multiplexación a la hora de enviar mensajes: más mensajes en la conexión TCP de manera simultanea.
    • Permite serializar datos.
  • Usa los protobuffers como estructura para intercambio de datos.
    • Permite serializar y deserializar datos más rápido.

Métodos de gRPC

Unary: similar a como funciona REST. Envía una petición al servidor, y el servidor la responde.

Streaming: permite constante envío de data en un canal.

  • Del lado del cliente: el cliente envía muchas peticiones, y el servidor responde una sola vez.
  • Del lado del servidor: el cliente realiza una sola petición, y el servidor responde enviando la data en partes.
  • Bidireccional: cliente y servidor deciden ambos comunicarse por streaming de data.
Estoy revisando este curso para poder entender algunas cosas, pero creería yo que esto podrá morir con la llegada de http3 que es la mezcla de quic + udp hay una discusión de esto : https://github.com/grpc/grpc/issues/19126