Node.js powoduje, że wszystkie operacje wejścia/wyjścia są asynchroniczne. Działa tylko w jednym wątku, ale wykonuje inne żądania lub operacje podczas oczekiwania na I/O.
W przeciwieństwie do klasycznych serwerów sieciowych nie będzie obsługiwać innego żądania, dopóki poprzednie nie zostanie w pełni wykonane. Z tego powodu Apache uruchamia kilka procesów w tym samym czasie; załóżmy, że jest 10 procesów 10 httpd
, co zwykle oznacza, że można wysłać 10 żądań w dowolnym momencie (*). Jeśli ukończenie procesów zajmie więcej czasu, będziesz obsługiwał mniej zgłoszeń - lub będziesz musiał odradzać więcej procesów, nawet jeśli proces nie działa - np. Czekanie, aż baza przeżyje i zwróci dane.
Proces node.js, w obliczu żądania, które przejdzie do bazy danych, pozostawia bazę danych do pracy, gdy przejdzie do innego żądania.
*) MPM czyni to nie do końca prawdą, ale jest wystarczająco prawdziwe dla wszystkich intencji i celów.
@MartinJames: Wydaje mi się, że odeszliśmy z czasów, gdy JS był domeną dziecięcych skryptów. Nie potrzeba żadnych uwag językowych. – Amadan
@Amadan Pytanie OP jest na granicy bycia promocją biznesową. To nie brzmi jak "Praktyczne, odpowiedzialne pytanie oparte na faktycznych problemach", (faq). Uwaga językowa wydawała się odpowiednia. Nie odrzucałem go ani nie głosowałem, aby zamknąć, ponieważ jest szansa, że jest to prawdziwe pytanie. –
@MartinJames: Nie, jeśli uważasz, że pytanie nie należy do SO, wskazówka do FAQ jest odpowiednia, nie to. Czy odpowiedziałbyś tak samo, gdyby pytanie dotyczyło [node.cs] (https://github.com/Rduerden/Node.cs), a wszystkie inne rzeczy były równe? – Amadan