¿Son mejores las llamadas asincrónicas? ¿Cuáles son las ventajas sobre las llamadas síncronas?

¿Qué es una llamada sincrónica? ¿Qué es una llamada asincrónica?

Una vez que los microservicios se dividen, inevitablemente implicarán llamadas mutuas entre servicios. Después de que la persona que llama inicia una solicitud, debe esperar a que el proveedor de servicios devuelva el resultado después de ejecutar el negocio y luego continuar ejecutando el negocio posterior. La persona que llama está bloqueada durante el proceso de llamada, por lo que llamamos a este método de llamada llamada sincrónica, que también se puede llamar comunicación sincrónica. Pero en muchos escenarios, es posible que necesitemos utilizar comunicación asincrónica. Veamos qué son la comunicación sincrónica y la comunicación asincrónica.

Comunicación sincrónica: Al igual que realizar una videollamada, la interacción entre ambas partes es en tiempo real. Por lo tanto sólo podrás realizar una videollamada con una persona a la vez.

Comunicación asincrónica: al igual que chatear en WeChat, la interacción entre las dos partes no es en tiempo real y no es necesario responder a la otra parte de inmediato. Así podrás operar en varias líneas y chatear con varias personas al mismo tiempo.

Ambos métodos tienen sus pros y sus contras: puedes obtener una respuesta inmediata cuando llamas, pero no puedes hablar con varias personas al mismo tiempo. Puedes enviar y recibir mensajes de WeChat a varias personas al mismo tiempo, pero la respuesta suele tardar.

Por tanto, si nuestro negocio requiere una respuesta en tiempo real por parte del proveedor de servicios, debemos optar por la comunicación sincrónica (llamada sincrónica). Y si buscamos una mayor eficiencia y no necesitamos una respuesta en tiempo real, deberíamos elegir la comunicación asincrónica (llamada asincrónica).

Hay tres problemas con las llamadas sincrónicas:

En primer lugar, la escasa escalabilidad:  nuestro negocio actual es relativamente simple, pero a medida que la escala del negocio se expande, las funciones de los productos también mejoran constantemente. En la mayoría de las empresas de comercio electrónico, una vez que el usuario paga con éxito, se le notificará mediante un mensaje de texto u otro medio para informarle que el pago se realizó correctamente. ¿Qué debe hacer si el gerente de producto presenta tales nuevos requisitos más adelante? ¿Quiere agregar el negocio de notificar a los usuarios al negocio anterior? En algunos proyectos de comercio electrónico, también existirá el concepto de puntos o monedas de oro. Si el gerente de producto realiza una solicitud, después de que el usuario haya pagado exitosamente, el usuario será recompensado con puntos o se le devolverán monedas de oro. ¿Qué debe hacer? ¿Debería agregar el negocio de puntos y el negocio de devolución de monedas de oro al negocio anterior? . . Con el tiempo, su negocio de pagos se volverá cada vez más inflado:

 En otras palabras, cada vez que hay una nueva demanda, la lógica de pago existente debe cambiar en consecuencia, y el código cambia con frecuencia, lo que no cumple con el principio de apertura y cierre y tiene poca escalabilidad.

En segundo lugar, el rendimiento disminuye  porque utilizamos llamadas sincrónicas. La persona que llama debe esperar a que el proveedor de servicios complete la ejecución y devuelva el resultado antes de continuar con la ejecución. Es decir, por cada llamada remota, la persona que llama está en espera de bloqueo. estado. Al final, el tiempo de respuesta de toda la empresa es la suma del tiempo de ejecución de cada llamada remota. Si el tiempo de ejecución de cada microservicio es de 50 ms, toda la empresa puede tardar hasta 300 ms y el rendimiento es demasiado pobre.

En tercer lugar, la cascada falló  porque llamamos al servicio de transacciones y al servicio de notificación basado en OpenFeign. Cuando el servicio de transacciones y el servicio de notificación fallan, toda la transacción se revertirá y la transacción fallará. Este es en realidad el problema de fallas en cascada de las llamadas sincrónicas.

Para solucionar estos problemas, debemos utilizar llamadas asincrónicas en lugar de llamadas sincrónicas.

Ventajas y características de las llamadas asincrónicas.

El método de llamada asincrónica en realidad se basa en la notificación de mensajes y generalmente incluye tres funciones:

Remitente del mensaje: la persona que entrega el mensaje es la persona que llama originalmente

Message Broker: administra, almacena temporalmente y reenvía mensajes. Puede considerarlo como un servidor WeChat.

Receptor del mensaje: la persona que recibe y procesa el mensaje es el proveedor del servicio original.

En una llamada asincrónica, el remitente ya no llama directamente a la interfaz comercial del receptor de forma sincrónica, sino que envía un mensaje al intermediario de mensajes. Luego, el receptor se suscribe al mensaje del intermediario de mensajes según sus propias necesidades. Siempre que el remitente envía un mensaje, el destinatario puede recibir el mensaje y procesarlo. De esta forma, la persona que envía el mensaje y la persona que lo recibe quedan completamente desacopladas.

Tomemos como ejemplo el negocio de pago de saldos:

Excepto por deducir el saldo y actualizar el estado del comprobante de pago, se cancela toda otra lógica de llamada. En cambio, se envía un mensaje al corredor. Los microservicios relevantes pueden suscribirse a notificaciones de mensajes. Una vez que el mensaje llega al corredor, se distribuirá a cada microservicio suscrito para procesar sus respectivos negocios.

Supongamos que el gerente de producto presenta nuevos requisitos, como actualizar los puntos de usuario después de un pago exitoso. No es necesario cambiar el código de pago en absoluto, simplemente deje que el servicio de puntos también se suscriba al mensaje:

No importa cuántos suscriptores de mensajes se agreguen más adelante, como servicio de pago, simplemente envíe el mensaje después de deducir el saldo y actualizar el estado del flujo de pago. El consumo de tiempo empresarial es solo de estas tres partes del negocio, solo 100 ms, lo que mejora enormemente el rendimiento empresarial.

Además, ya sean servicios de transacciones, servicios de notificación o servicios de puntos, su negocio tiene baja correlación con el pago. Hoy en día se utilizan llamadas asincrónicas para desacoplar el acoplamiento, incluso si fallan durante la ejecución, el servicio de pago no se verá afectado.

En resumen, las ventajas de las llamadas asíncronas incluyen:

Menos acoplamiento

Mejor interpretación

Fuerte expansión empresarial

Aislamiento de fallas para evitar fallas en cascada

Por supuesto, la comunicación asincrónica no es perfecta y tiene las siguientes deficiencias:

Completamente dependiente de la confiabilidad, seguridad y rendimiento del Broker.

Arquitectura compleja, mantenimiento y depuración posteriores problemáticos

Supongo que te gusta

Origin blog.csdn.net/Blue92120/article/details/133343576
Recomendado
Clasificación