¿Dónde exactamente se puede usar la cola de mensajes en una aplicación web?

Tengo un sitio web que recibe solicitudes de API cuando ocurre algo, procesa un poco y envía los datos a una base de datos en un servidor diferente. Si la solicitud de API a mi servidor falla, los datos se pierden. Si la solicitud que le hago al otro servidor (para almacenar los datos en la base de datos) falla, los datos se pierden.

Lo que soluciona este problema es una cola de mensajes. En lugar de escuchar solicitudes de API, escucho nuevos mensajes en la cola. Comienzo a procesar los datos cuando recibo el mensaje, y lo borro de la cola solo cuando he enviado con éxito mi salida a la base de datos. Si mi servidor falla o sucede algo malo, mi servidor puede reiniciarse (o incluso reemplazarse) y el mensaje sigue ahí, listo para ser reprocesado.

Considere un sitio que acepte imágenes para usar como avatares de perfil. Desea cambiar su tamaño a miniaturas. Almacenaría el original en un archivo y luego agregaría la ruta al archivo a la cola. Un proceso separado (o incluso un servidor) puede leer desde la cola y procesar cada imagen. ¡No más imágenes rotas cuando el servidor de procesamiento de imágenes tiene problemas!

Los tiempos de ejecución de JavaScript son de un solo subproceso. Eso significa que cuando está haciendo algo con la CPU no está haciendo otras cosas, como atender solicitudes para otros usuarios. Ahora hay agrupación y otras formas de evitar esto, pero Node generalmente se considera realmente bueno en E / S y menos bueno en tareas intensivas de CPU. Por lo tanto, para las cosas que pueden llevar tiempo procesar, a menudo tiene un front-end de nodo que coloca una solicitud en una pregunta que puede ser manejada por algún otro proceso o conjunto de procesos. A menudo escrito en un lenguaje y marco que se adapta mejor a esa tarea que JavaScript.

Una arquitectura típica sería que el usuario interactúa con una aplicación Node, cuando realiza una solicitud, se coloca en una cola y obtiene un token. La aplicación luego verifica periódicamente si la solicitud ha sido cumplida por algo al otro lado de esa cola. Eso podría ser en los próximos minutos o más, dependiendo del tipo de solicitud.

More Interesting

Cómo hacer un sitio web usando HTML en el Bloc de notas

Estoy usando Notepad ++. No tengo un servidor PHP y mis códigos no se ejecutan. ¿Cómo puedo ejecutar un código PHP?

Necesito crear un servicio web que muestre la entrada de un usuario a otros usuarios. ¿Cómo hago esto? Diseño sitios web pero nada como esto todavía.

Estoy aprendiendo PHP. ¿Es una buena decisión?

Cuando tenía 14 años, tomé una clase de HTML. No he usado HTML en más de 10 años. ¿Debo codificar desde cero o usar estos marcos calientes como Foundation?

He creado mi sitio web en mi servidor local y estoy listo para comprar un hosting y un nombre de dominio. ¿Qué debo elegir y por qué?

¿Qué sitio web puedo usar para encontrar una empresa especializada en el desarrollo de juegos? Tengo una idea para un juego que me gustaría crear.

Si quiero construir el nuevo Facebook, ¿qué debo hacer?

Mi jefe está tratando de convertirme en gerente de proyecto de un desarrollador web debido a mi buen historial de comunicación con los clientes. ¿Cuáles podrían ser las consecuencias positivas o negativas?

Acabo de comprar un tema de WordPress para mi sitio, pero parece que no puedo hacer que se vea como lo que vi en la demostración. ¿Todos los temas son tan difíciles de armar?

¿Es este libro 'Diseño web con HTML, CSS, JavaScript y jQuery' de Jon Duckett suficiente para un conocimiento completo del desarrollo web?

Cómo saber si mi aplicación debe compilarse como una aplicación web simple o un servicio web

¿Debo aprender c ++ / c si quiero ser desarrollador web?

Estoy aprendiendo ROR y me preguntaba si los empleadores estarían interesados ​​en ver varios algoritmos / programas que escribí, o si solo se preocupan por las aplicaciones de Rails específicamente. ¿Debo incluirlo?

Después de mucha investigación, decidí construir mi sitio web usando Drupal. ¿Cómo puedo determinar la estructura de mi sitio web (métodos y técnicas clásicas)? ¿Cuáles son los pasos necesarios para crear un sitio web con Drupal (sitios web o libros para consultar)?