RPC, llamada a procedimiento remoto, llamada a procedimiento remoto, que define el comportamiento de un programa en una máquina llamando a una subrutina en otra máquina Características:
Se movió la implementación remota a local. De hecho, no hay diferencia entre llamadas remotas y llamadas locales.
Usando el modo cs, el cliente inicia una solicitud y el servidor la ejecuta después de recibir los parámetros de la solicitud.
Proteger la complejidad subyacente de las llamadas entre procesos y redes nos permite centrarnos más en la lógica empresarial.
1.2 Marco de implementación específico
dubbo (apache alibaba java)
Motan (Weibo)
tars (interno a Tencent)
Grpc
ahorro
Nube de primavera abierta y fingida
1.3 Escenarios de aplicación
Se puede utilizar para comunicación entre redes.
2. Puntos técnicos clave de RPC y una llamada al proceso de rpc
2.1 proceso RPC
proceso
El cliente llama a la interfaz y va a la clase de proxy, ensambla la solicitud y la serializa, luego codifica el protocolo y lo envía.
El servidor recibe la solicitud, realiza el análisis y la deserialización del protocolo para obtener los parámetros de la solicitud.
El servidor llama a la implementación de la interfaz según los parámetros de la solicitud y luego ensambla la respuesta.
La respuesta se devuelve de la misma manera.
¿Cómo se conectan los dos módulos de red?
El centro de registro es un lugar donde se almacenan los datos y es mejor proporcionar funciones de seguimiento.El centro de registro está separado del marco rpc. Centros de registro comunes: zookeeper, nacos, etcd.
Otras características
Filtros de ruta proveedores disponibles
Equilibrio de carga: elija qué proveedor utilizar entre los proveedores disponibles
Limitación de fusibles: control de flujo
procesamiento de red
Procesamiento de protocolo
Ventajas de RPC
Facilite la creación de aplicaciones distribuidas, desacople servicios y expanda fácilmente
RPC generalmente utiliza conexiones largas, lo que elimina la necesidad de establecer una conexión para cada comunicación y reduce la sobrecarga de la red.
RPC requiere un centro de registro que pueda detectar y visualizar dinámicamente los cambios en el servicio.
Ricas funciones de gestión en segundo plano, gestión unificada de servicios de interfaz, sin percepción para la persona que llama, operación unificada
Protocolo optimizado, mayor eficiencia, alta privacidad y seguridad
Tiene funciones como equilibrio de carga, disyuntor y limitación de corriente.
2.2 Tecnología de serialización
Cualquier marco de serialización: la idea central es el diseño.un protocolo de serialización,Escriba el tipo de objeto, el tipo de atributo y el valor del atributo en el flujo de bytes binarios en un formato fijo para completar la serialización.Y luego lea el tipo de objeto, el tipo de atributo y el valor del atributo uno por uno de acuerdo con el formato fijo, y vuelva a crear un nuevo objeto a través de esta información para completar la deserialización.
Método de serialización
Serialización nativa JDK
Formato de intercambio de datos de texto ligero: json/XML
Tiene buena legibilidad y es conveniente para la lectura y la depuración. El archivo de bytes después de la serialización con soporte en varios idiomas es relativamente grande y relativamente ineficiente. Sin embargo, en comparación con XML, el flujo de bytes después de la serialización se usa ampliamente en las empresas. especialmente para el front-end y terceros proporcionan API.
arpilleraEs de tipo dinámico, binario y admite el marco Xu Lihua en varios idiomas.
El rendimiento de Hesse es mucho más eficiente que la serialización JDK y JSON. Y la cantidad de bytes generados también es menor.Muy buena compatibilidad y estabilidad.,Por lo tanto, Hessian es más adecuado como protocolo de serialización para comunicación remota en el marco RPC.
Protobuf
La biblioteca de secuencias de código abierto lanzada por Google es un formato de almacenamiento de datos estructurados eficiente y liviano con soporte en varios idiomas.
Velocidad rápida, alta relación de compresión y tamaño pequeño. El volumen después de la serialización es mucho más pequeño que JSON y Hessian. El formato del disco en color del curso tiene buena expansión, actualización y compatibilidad, y puede ser compatible con versiones anteriores.
¿Cómo elige PRC un marco de serialización?
Factores de selección
Seguridad: la primera consideración es que si existen vulnerabilidades de seguridad en la serialización, es probable que los servicios en línea sean invadidos (la serialización nativa JDK tiene vulnerabilidades
Compatibilidad: ¿Es muy buena la compatibilidad del protocolo de serialización después de la actualización de la versión, ya sea multiplataforma, multilingüe, etc.?
Versatilidad: capaz de serializar y deserializar cualquier tipo, el servidor no dejará de poder llamar al método de interfaz de servicio después de agregar un determinado tipo de parámetro.
Rendimiento y eficiencia: el proceso de serialización y deserialización es un proceso necesario para las llamadas RPC. El rendimiento y la eficiencia seguramente estarán directamente relacionados con el rendimiento y la eficiencia generales del marco RPC.
Sobrecarga de espacio: el tamaño de los datos binarios después de la serialización. Cuanto menor sea el tamaño de los datos de bytes serializados, menor será la cantidad de datos transmitidos a través de la red y más rápido se transmitirán los datos. Esto está directamente relacionado con las llamadas de solicitud RPC. tiempo de respuesta
Consideraciones
Evite objetos que sean demasiado complejos de construir, que tengan muchos atributos y múltiples niveles de anidamiento.
Evite objetos que sean demasiado grandes: cadenas grandes, matrices muy grandes, etc.
Evite pasar tipos como parámetros que no son compatibles con el marco de serialización
Evitar que los objetos tengan relaciones de herencia complejas
2.3 Protocolo de comunicación de la capa de aplicación-http
2.3.1 Conceptos básicos
La mayoría de los RPC desarrollan http por sí mismos y también admiten http1.1
¿Qué es la OI?
IO es el proceso de copiar datos entre la computadora interna y los dispositivos externos. Una vez que llegan los datos de la red, primero se almacenan en el área de caché del kernel del sistema operativo y esperan a que la aplicación los recopile.
borde activado
Cuando se utiliza el modo de activación de borde, cuando ocurre un evento legible en el descriptor de Socket monitoreado, el servidor solo se despertará de epoll_wait una vez. Incluso si el proceso no llama a la función de lectura para leer datos del kernel, solo se despertará. por lo tanto, nuestro programa debe garantizar que los datos en el búfer del núcleo se lean todos a la vez.
gatillo horizontal
Cuando se usa el modo de activación horizontal, cuando ocurre un evento legible en el Socket monitoreado, el servidor se activa continuamente desde epoll_wait hasta que la función de lectura lee los datos del búfer del kernel. El propósito es decirnos que hay datos que deben ser leídos. leer. .
E/S impulsada por eventos
Después de iniciar una solicitud de lectura, espere la notificación del evento de lectura lista antes de leer los datos.
E/S asincrónicas
Después de iniciar una solicitud de lectura, espere a que el sistema operativo le notifique después de que se complete la lectura y entregue completamente la función al sistema operativo para su implementación.
2.3.2 ¿Cuáles son los modelos IO del sistema operativo?
IO de bloqueo sincrónico IO síncrona sin bloqueo multiplexación de E/S E/S impulsada por señal E/S asincrónicas
IO de bloqueo sincrónico
La primera etapa de lectura está bloqueada, que es lo que a menudo llamamos bloqueo de IO. Es decir, si la primera etapa de lectura está bloqueada esperando que la lectura esté lista, lo llamamos bloqueo de IO.