sql >> Base de Datos >  >> NoSQL >> Redis

¿Cómo comunicar dinamómetros Web y Worker con Node.js en Heroku?

Como sugiere el artículo de alto nivel sobre trabajos en segundo plano y colas, sus dynos web deberán comunicarse con sus dynos de trabajo a través de un mecanismo intermedio (a menudo una cola).

Para lograr lo que parece que espera hacer, siga este enfoque general:

  • La solicitud web es recibida por el dinamómetro web
  • Web Dyno agrega un trabajo a la cola
  • El dinamómetro del trabajador recibe un trabajo de la cola
  • Worker dyno ejecuta el trabajo, escribiendo el progreso incremental en un componente compartido
  • El sondeo del lado del navegador solicita el estado del trabajo desde el dinamómetro web
    • Web Dyno consulta el componente compartido para conocer el progreso del trabajo en segundo plano y envía el estado al navegador
  • Worker dyno completa la ejecución del trabajo y lo marca como completo en el componente compartido
  • El sondeo del lado del navegador solicita el estado del trabajo desde el dinamómetro web
    • Web Dyno consulta el componente compartido para conocer el progreso del trabajo en segundo plano y envía el estado completado al navegador

En cuanto a la implementación real, no estoy muy familiarizado con las mejores bibliotecas de Node.js, pero los componentes que unen este proceso están disponibles en Heroku como complementos.

Cola:AMQP es un protocolo de cola bien soportado y el complemento CloudAMQP puede servir como la cola de mensajes entre su web y los dynos de trabajo.

Estado compartido:puede usar uno de los complementos de Postgres para compartir el estado de un trabajo que se está procesando o algo más eficaz, como Memcache o Redis.

Entonces, para resumir, debe usar un componente complementario intermedio para comunicarse entre dynos en Heroku. Si bien este enfoque implica un poco más de ingeniería, el resultado es una arquitectura escalable y desacoplada correctamente.