Jak sugeruje artykuł wysokiego poziomu na temat zadań w tle i kolejkowania, Twoja hamownia internetowa będzie musiała komunikować się z hamownią roboczą za pośrednictwem mechanizmu pośredniego (często kolejki).
Aby osiągnąć to, co brzmi, jak masz nadzieję, postępuj zgodnie z następującym ogólnym podejściem:
- Żądanie internetowe jest odbierane przez hamownię internetową
- hamownia internetowa dodaje zadanie do kolejki
- Dyno robotnicze otrzymuje zadanie z kolejki
- Dyno robocze wykonuje zadanie, zapisując przyrostowy postęp do współdzielonego komponentu
- Żądania odpytywania po stronie przeglądarki dotyczące statusu zadania z dyno
- hamownia internetowa odpytuje współdzielony komponent o postęp pracy w tle i wysyła stan z powrotem do przeglądarki
- Dyno robocze kończy wykonywanie zadania i oznacza je jako ukończone we współdzielonym komponencie
- Żądania odpytywania po stronie przeglądarki dotyczące statusu zadania z dyno
- hamownia internetowa pyta współdzielony komponent o postęp pracy w tle i wysyła stan ukończenia z powrotem do przeglądarki
Jeśli chodzi o rzeczywistą implementację, nie jestem zbyt zaznajomiony z najlepszymi bibliotekami w Node.js, ale komponenty, które spajają ten proces razem, są dostępne w Heroku jako dodatki.
Kolejka:AMQP jest dobrze obsługiwanym protokołem kolejki, a dodatek CloudAMQP może służyć jako kolejka wiadomości między Twoją hamownią internetową i roboczym.
Stan udostępniony:możesz użyć jednego z dodatków Postgres, aby udostępnić stan przetwarzanego zadania lub coś bardziej wydajnego, takiego jak Memcache lub Redis.
Podsumowując, musisz użyć pośredniego komponentu dodatkowego do komunikacji między hamowniami w Heroku. Chociaż to podejście wymaga nieco więcej inżynierii, wynikiem jest odpowiednio oddzielona i skalowalna architektura.