Camino práctico para construir una puerta de enlace API usando netty
Con el rápido desarrollo de Internet, ahora estamos entrando en la era de la Internet móvil y la Internet de las cosas. También hay muchas formas para que los usuarios accedan al sistema, desde el cliente de PC único original hasta clientes de PC, varios navegadores, teléfonos móviles y terminales inteligentes. Al mismo tiempo, la mayoría de los sistemas no se ejecutan de forma independiente y, a menudo, implican la necesidad de conectarse con otros sistemas y compartir datos. Por lo tanto, el sistema necesita actualizar el marco para satisfacer las necesidades cambiantes, respaldar el desarrollo empresarial y actualizar el marco a una arquitectura de microservicio. El componente central de la "puerta de enlace API" es una arquitectura diseñada para satisfacer estas necesidades
Muchas plataformas de Internet han creado puertas de enlace API para sus propias plataformas basándose en la idea de diseño de la puerta de enlace. En China, existe principalmente JD.com. , Ctrip, Vipshop, etc. Los principales extranjeros incluyen Netflix, Amazon, etc.
Para satisfacer estas necesidades, la industria ya cuenta con marcos de entrada relacionados.
1. Las puertas de enlace implementadas en base a la plataforma nginx incluyen: kong, paraguas, etc.
2. Las puertas de enlace de desarrollo propio incluyen: zuul1, zuul2, etc.
Pero las puertas de enlace anteriores El marco solo puede satisfacer parte de las necesidades, pero no puede satisfacer todos los requisitos de la empresa. En lo que a mí respecta, creo que el mayor problema es que no hay conversión de protocolo ni gestión de OPS. y plataforma de control
Además: bajo la arquitectura de microservicio, si se basa en el protocolo de transmisión HTTP REST, la puerta de enlace API también asume la función de filtrar las API internas y externas. Solo las API registradas en la puerta de enlace API también pueden hacerlo. ser verdaderas API fuera del montón
Todo el sistema de puerta de enlace se compone de tres subsistemas:
Descripción:
1) Todo el sistema de puerta de enlace se basa en Netty NIO para implementar servicios HTTP sincrónicos y sin bloqueo. La puerta de enlace es el servidor HTTP para solicitudes de API externas y el cliente para servicios internos, por lo que existen Netty Server Handler y Netty Client Handler.
2) Para Netty Server. Controlador, cuando llega una solicitud HTTP, convertirá la conexión actual en ClientToProxyConnection, que es segura para subprocesos. Cuando finaliza el ciclo de vida de la solicitud HTTP actual, también es responsable del mantenimiento del ciclo de vida de ClientToProxyConnection; /p>
3) Para Netty Client Handler, cuando ClientToProxyConnection necesita pasar la solicitud al servicio interno, se crea un nuevo (u obtener el ProxyToServerConnection creado originalmente para realizar solicitudes internas, que también es seguro para subprocesos;
4) Para Filter, se ejecuta en ClientToProxyConnection, insertando solicitudes y recibiendo solicitudes de back-end;
Según el análisis anterior, es una opción adecuada que la puerta de enlace elija el modo no síncrono. método de bloqueo
El proceso de conversión es el siguiente:
2: Obtenga gRPC de acuerdo con los descriptores de parámetros de entrada y salida de FileDescriptorSet y luego cree el objeto de descripción del método MethodDescriptor requerido por gRPC
2) HTTP ----gt; dubbo
En el diseño del marco de dubbo, que ya incluye el diseño de llamadas generalizadas, en esta área, las llamadas generalizadas de dubbo se utilizan básicamente para implementar. el protocolo http-to-dubbo En cuanto a los parámetros de dubbo, puede especificar la especificación de mapeo de parámetros y utilizar los parámetros. La tecnología de personalización extrae los parámetros de solicitud http. es pojo, siga la documentación del usuario de dubbo para formar una estructura de datos de mapa. Este paso requiere reglas de mapeo.
La puerta de enlace completa está básicamente completa y es de código abierto. Puede comprarlo y usarlo.
Tesla