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.