sql >> Databasteknik >  >> NoSQL >> Redis

Hur kommunicerar man webb- och arbetsdynor med Node.js på Heroku?

Som högnivåartikeln om bakgrundsjobb och köer antyder kommer dina webbdynor att behöva kommunicera med dina arbetardynor via en mellanliggande mekanism (ofta en kö).

För att åstadkomma vad det låter som du hoppas göra, följ denna allmänna strategi:

  • Webbförfrågan tas emot av webbdyno
  • Webdyno lägger till ett jobb i kön
  • Arbetardyno får jobb utanför kön
  • Arbetardyno utför jobbet och skriver inkrementella framsteg till en delad komponent
  • Uppsökning på webbläsarsidan begär status för jobbet från webbdyno
    • Webbdyno-förfrågningar delad komponent för framsteg av bakgrundsjobb och skickar tillstånd tillbaka till webbläsaren
  • Arbetardyno slutför utförandet av jobbet och markerar det som färdigt i delad komponent
  • Uppsökning på webbläsarsidan begär status för jobbet från webbdyno
    • Webbdyno-förfrågningar delad komponent för framsteg av bakgrundsjobb och skickar färdigt tillstånd tillbaka till webbläsaren

När det gäller den faktiska implementeringen är jag inte så bekant med de bästa biblioteken i Node.js, men komponenterna som limmar ihop denna process är tillgängliga på Heroku som tillägg.

Kö:AMQP är ett välstödt köprotokoll och CloudAMQP-tillägget kan fungera som meddelandekö mellan din webb- och arbetsdyno.

Delat tillstånd:Du kan använda ett av Postgres-tilläggen för att dela tillståndet för ett jobb som bearbetas eller något mer presterande som Memcache eller Redis.

Så, för att sammanfatta, måste du använda en mellanliggande tilläggskomponent för att kommunicera mellan dynos på Heroku. Även om detta tillvägagångssätt involverar lite mer ingenjörskonst, är resultatet en korrekt frikopplad och skalbar arkitektur.



  1. Manuell tillförsel av argument till en MongoDB-fråga för att stödja sorteringsfunktionen (för skiftlägesokänsligt index)

  2. Bästa metoder för att köra MongoDB i ett kluster

  3. Med tanke på en lista över ID, vad är det bästa sättet att fråga vilka ID som inte finns i samlingen?

  4. MongoDB på Azure:Hur man väljer rätt instanstyp?