RPC - Llamada a procedimiento remoto
1.1 ¿Qué es RPC?
RPC (Protocolo de llamada a procedimiento remoto): protocolo de llamada a procedimiento remoto, es un método para solicitar servicios de programas informáticos remotos a través del red sin comprender los protocolos de las tecnologías de red subyacentes. El protocolo RPC supone la existencia de algún protocolo de transporte, como TCP/IP o UDP, para transferir datos de mensajes entre programas en comunicación. RPC convierte la llamada local original en una llamada a un método en el servidor remoto, lo que permite que el sistema aumente la potencia de procesamiento y el rendimiento casi infinitamente. En el modelo de comunicación de red OSI, RPC abarca la capa de transporte y la capa de aplicación. RPC facilita el desarrollo de aplicaciones que incluyen multiprogramación distribuida en red.
En resumen, RPC tiene las siguientes características:
1. Resuelve el problema de llamadas entre servicios en un sistema distribuido.
2. Las llamadas remotas deben ser tan simples como las llamadas locales, para que la persona que llama no pueda percibir la lógica de las llamadas remotas.
3. La serialización y deserialización son requisitos previos
1.2 Arquitectura RPC
Una arquitectura RPC completa consta de cuatro componentes principales, a saber, Cliente, Cliente Stub, Servidor y Servidor Stub. Los servidores y los apéndices de servidor pueden entenderse como apéndices.
El cliente es el llamante del servicio.
El código auxiliar del cliente (Client Stub) guarda la información de la dirección del servidor, luego empaqueta los parámetros de solicitud del cliente en información de la red y los envía al servidor de forma remota a través de la red.
Servidor, el verdadero proveedor de servicios.
Server Stub es responsable de recibir los mensajes enviados por el cliente, descomprimir los mensajes y llamar a métodos locales.
1.3 Proceso de llamada RPC
(1) El cliente llama al servicio localmente (es decir, como una interfaz
(2) El stub del cliente recibe; la llamada, y es responsable de ensamblar métodos, parámetros, etc. en un cuerpo de mensaje que se puede transmitir a través de la red (seriando el objeto del cuerpo del mensaje en binario);
(3) El código auxiliar del servidor recibe el mensaje, descomprime el mensaje y llama a métodos locales.
(3) El cliente envía un mensaje al servidor a través del socket
(4) El código auxiliar del servidor recibe el mensaje y lo decodifica (deserializa el objeto del mensaje ); p>
(5) El código auxiliar del servidor llama al servicio local según el resultado de la decodificación;
(6) Llama al servicio local.
(6) El servicio local se ejecuta y devuelve el resultado al código auxiliar del servidor;
(7) El código auxiliar del servidor empaqueta el resultado devuelto en un mensaje (objeto de mensaje de resultado serializado);
p>
(8) El servidor envía el mensaje al cliente a través del socket
(9) El código auxiliar del cliente recibe el mensaje de resultado y lo decodifica (resultado serializado; mensaje);
(10) El cliente obtiene el resultado final.
El objetivo del RPC es encapsular los pasos 2, 3, 4, 7, 8 y 9.
Nota: No importa qué tipo de datos, en última instancia, deben convertirse en un flujo binario antes de que puedan transmitirse en la red; y el receptor de los datos necesita convertir el flujo binario en un flujo binario Restaurar al objeto.
Referencia:
Artículo:
wikipedia - RPC
qué-es-restful-rest-vs-rpc
diferencia-entre-rpc y-rmi. html
cuál-es-la-diferencia-entre-java-rmi y-rpc
Documentación de uso de Dubbo
Manual de desarrollo del código fuente de Dubbo