Invocación de microservicio en varios idiomas (extracto)
La arquitectura de microservicios se ha convertido en la tendencia actual en la arquitectura de Internet, y los debates sobre microservicios ocupan casi la gran mayoría de las páginas en diversas conferencias tecnológicas. El marco de gobernanza de servicios más utilizado en China es dubbo de código abierto de Alibaba. Qianmi.com también eligió dubbo como su marco de gobernanza de microservicios. Por otro lado, como la mayoría de las empresas de Internet, los lenguajes de desarrollo de Qianmi son diversos. La mayoría de las empresas de back-end son compatibles con Java y cada línea de negocio tiene su propia elección de lenguajes de desarrollo, como nodejs, python y go. problema de las llamadas en varios idiomas.
Las llamadas en varios idiomas son un tema importante y una tarea técnica muy desafiante. Actualmente, las soluciones que se mencionan a menudo en la industria son las siguientes. p>¿De qué hablamos cuando hablamos de llamadas entre idiomas? Si observamos las soluciones más generales y maduras mencionadas anteriormente, podemos concluir que solo hay dos ideas para resolver llamadas entre idiomas:
Si un nuevo tipo de equipo se enfrenta a la selección de tecnología, creo que mencionado anteriormente Todas las soluciones se pueden incluir como referencia y se pueden tener en cuenta los problemas de compatibilidad de los sistemas heredados
El costo de migrar sistemas antiguos
Este también es un factor de selección clave . Nuestro primer intento fue trabajar en el protocolo RPC.
Soporte multilingüe para protocolos comunes
Los buenos viejos tiempos de springmvc
springmvc
springmvc
aún no está implementado Antes de una verdadera invocación en varios idiomas, la mayoría de las soluciones para lograr "multilenguaje" son usar .alibaba.dubbo.remoting.exchange.Response
ID de invocación: ID de mensaje, tipo largo. La identificación de identificación única de cada solicitud (debido al método de comunicación asincrónica, utilizada para hacer coincidir la solicitud y la respuesta devuelta)
longitud del cuerpo: la longitud del cuerpo del mensaje, tipo int, es decir, el registro El contenido del cuerpo tiene cuántos bytes
contenido del cuerpo: los parámetros de solicitud y los parámetros de respuesta se almacenan aquí después de la serialización abstracta.
Los mensajes de protocolo eventualmente se convertirán en bytes y se transmitirán mediante tcp. Siempre que cualquier lenguaje admita módulos de red y tenga encapsulación como Socket, la comunicación no será un problema. Entonces, ¿cuál es la dificultad del cruce de idiomas? Hay dos dificultades principales al llamar a Java desde otros lenguajes:
ps: demostración de comunicación del protocolo dubbo (/lexburner/Dubbojs-Learning)