Comunicación Asíncrona: Concepto, Significado y Definición ¿Qué es?

conexión que se establece entre el cliente y el servidor

Es un método de comunicación ampliamente utilizado entre diferentes procesos y sistemas.

En una comunicación asíncrona, el cliente envía una solicitud al servidor (que requiere un procesamiento prolongado) y recibe un acuse de recibo de entrega de inmediato. A diferencia de la comunicación síncrona, esta respuesta aún no tiene la información requerida.

Una vez que el cliente recibe el acuse de recibo, continúa realizando sus otras tareas, asumiendo que eventualmente se le notificará cuando la información requerida esté lista en el lado del servidor.

El mayor beneficio de la comunicación asíncrona es el mayor rendimiento. Dado que el cliente no bloquea sus valiosos ciclos de CPU solo por esperar, puede entregar más en el mismo período de tiempo.

Un mayor desacoplamiento entre la interacción cliente-servidor, también conducirá a una mejor escalabilidad.

Ejemplos de Patrones de comunicación asíncrona

  • Se envía una solicitud de “Diseño y Asignación” a la aplicación de gestión de inventario, desde la aplicación de gestión de pedidos.
  • Se pide una descarga completa de un archivo, mediante una aplicación de gestión de inventario.
  • La aplicación de monitoreo envía 1000 SMS al servicio de atención a los clientes, a través de un SMS puerta de entrada.

Hay tres métodos para implementar una comunicación asíncrona:

  • Retrollamadas asíncronas.
  • Uso de la mensajería Pub-Sub utilizando un agente de mensajes.
  • Encuestas para cambios de estado.

Métodos para implementar la comunicación asíncrona

Devolución de llamada asíncrona

En un mecanismo de devolución de llamada asíncrono, se producen los siguientes pasos:

  1. El cliente realiza su autenticación en el servidor.
  2. El cliente llama a la operación del servidor. (servicio web, RPC, llamada a método local, entre otros).
  3. El cliente también se suscribe con su dirección de punto final de devolución de llamada al servidor.
  4. El servidor acusa recibo de la solicitud de forma síncrona.
  5. El cliente espera la respuesta de otro canal predefinido (una página PHP, un identificador local, etc.)
  6. El servidor termina el trabajo requerido y notifica al cliente desde el canal.
  7. El cliente obtiene la información y la procesa.

Publicación / suscripción basada en el agente

En este método, se crea un tema para habilitar la comunicación Cliente-Servidor. Los pasos son similares a la devolución de llamada asíncrona, pero aquí, el medio es diferente. El servidor nunca notifica al cliente directamente. Lo hace a través de un búfer.

  1. El cliente efectúa una autenticación dentro del servidor.
  2. El cliente llama a la operación del servidor. (servicio web, RPC, llamada a método local, etc.)
  3. El cliente se suscribe al intermediario y comienza a escuchar el tema desde un hilo diferente.
  4. El servidor termina el trabajo requerido y publica un mensaje al tema.
  5. El cliente obtiene la información y la procesa.

Ya que dependemos de un componente diferente que hará la mediación entre los sistemas, deberíamos tener una comprensión sólida del funcionamiento interno de ese corredor.

Las características como la durabilidad de los mensajes, los TTL y las rutas deben elaborarse a fondo.

Estrategia clave

Los participantes deben poder identificar de forma única cada solicitud. Es decir, si el cliente le pide al servidor que descargue su base de datos a un servidor FTP, el servidor debe devolver su acuse de recibo con una clave que identifique esta solicitud individual.

El cliente puede, entonces, esperar esta clave en particular en su canal de escucha y correlacionar la notificación entrante con la solicitud original. Idealmente, esta clave debe ser generada por el servidor.

Sin embargo, en algunas situaciones (requisito de rastreo en la nube o participación de la aplicación heredada), el cliente proporciona una clave única adjunta a la solicitud.

Entonces, es responsabilidad del servidor responder con la misma clave, cuando llegue el momento de la devolución de llamada.

El inconveniente de este enfoque son las colisiones clave. Si un cliente separado también proporciona la misma clave al mismo tiempo, el servidor deberá rechazar la solicitud.