Przebaczam moją ignorancję, ale pochodząc z tła Django/Python, widzę ogromną zaletę, że kolejka Selera działa przez wolniejsze procesy w tle, podczas gdy interfejs sieciowy jest aktualizowany tak szybko, jak to możliwe.Węzły pracowników JS - jakiejkolwiek potrzeby?
Jednak w przypadku węzła działającego asynchronicznie, czy przypadek użycia systemu kolejki zmniejszył się znacznie?
Na przykład:
1 - posty użytkownika coś na miejscu, 2 - strona odpowiada, następnie maili z administratorem.
W Django, wyślesz pocztę administratora do zadania, które zostanie wykonane później, a następnie odpowie na żądanie. Seler wysyła pocztę w tle.
Węzeł wywołuje swój program pocztowy, a następnie odpowiada na żądanie. Program pocztowy wysyła następnie wywołanie zwrotne, aby powiedzieć "ZROBIONY, czy nie", do którego punktu użytkownik przegląda już odpowiedź.
Dlaczego więc miałbym używać kolejki z węzłem? Zgaduję, że rzeczy są bardziej złożone niż to - wydaje się, że w przypadku banalnych rzeczy, takich jak maile transakcyjne, nie jest to konieczne ..
Czy nie rozumiem, jak to działa !?
Więc jeśli chcę zrobić coś takiego, jak wywołać zewnętrzny interfejs API, aby wyposażyć użytkowników informacje - np. wykonaj geokodowanie odwrotne za pomocą wywołania żądania do geokodera Google'a. To żądanie nie zatrzymałoby mojego procesu węzła dla następującego żądania przychodzącego? Ale gdyby było dużo użycia procesora, to ...? –
Musisz to porównać, ale tak. To z grubsza taki pomysł. Zajrzyj tutaj, aby dowiedzieć się, ile można zrobić, czekając na operację io: http://www.eecs.berkeley.edu/~rcs/research/interactive_latency.html. Węzeł wykonuje tylko jedną rzecz naraz, więc jeśli jest to liczba, która nie działa, nie może obsługiwać żądań.Jak tylko wykonasz dowolną rzecz, uwolnisz węzeł i wykonasz inne czynności. – AndyD
Przeformowanie dla (marginalnej) klarowności: jeśli wykonanie równoległe wymaga dużej ilości czekania na żądanie HTTP lub żądania systemu plików, to wbudowane asynchroniczne operacje we/wy węzła będą dla ciebie wystarczająco równoległe. Jeśli twoja równoległa implementacja wymaga lokalnego wykonywania dużych obliczeń (transkodowanie wideo, uruchamianie symulacji), to jednolita natura węzła utknie i będziesz musiał wykuć pracę do pracownika, jeśli to możliwe. – Dave