skalowalny, co to oznacza? Jaka część serwera node.js jest skalowalna. Czytałem, że jest to technologia jednowątkowa, która nie jest odpowiednia dla aplikacji, które wymagałyby dużej ilości zasobów procesora. Fakty te nie pasują do skalowalności, więc co to oznacza?Dlaczego program Node.js jest skalowalny?
Odpowiedz
Jądro w tym węźle działa w trybie pojedynczego wątku, ale wiele rzeczy, które wywołujesz w węźle - takich jak sieć lub plik - uruchamiane w wątkach w tle. Zobacz ten post za podstawowy przegląd: Node is not single threaded
Jeśli potrzebujesz piaszczysty szczegóły, należy spojrzeć na libuv który jest „magia” kawałek konwersji wątki w przypadku pętli: http://nikhilm.github.io/uvbook/basics.html#event-loops
Dodatkowo, jeśli trzeba aby zrobić coś bardzo obciążającego procesor w samym węźle, możesz łatwo wysłać to do procesu potomnego - zobacz http://nodejs.org/api/child_process.html#child_process_child_process_fork_modulepath_args_options, aby uzyskać szczegółowe informacje:
Czy operacje takie jak odczytywanie z bazy danych lub ich aktualizacja, blokowanie czy blokowanie? To jest w.r.t do RDBMS. Czy sugerujesz Węzeł dla takich aplikacji? – LearningToCode
jest skalowalny ze względu na równoważenie obciążenia. Zasadniczo możesz mieć wiele zadań dla węzła do przetworzenia i może obsłużyć go bez znacznego obciążenia. To sprawia, że jest skalowalny.
W jaki sposób jest realizowane równoważenie obciążenia? – vuvu
Czy nie jest to bardziej skalowalne "per se". To wszystko, co robisz, to skalowalność (I/O) bez konieczności robienia czegoś specjalnego.
I/O jest bezpieczniejsze i łatwiejsze do wykonania równolegle, ponieważ zwykle nie udostępnia żadnych danych między wątkami wykonawczymi. Node.js pozwala to zrobić za pomocą programowania zdarzeń, który jest prosty, elegancki i łatwy w użyciu. Jest starym i sprawdzonym paradygmatem programowania, używanym od lat przez GUI i inne graficznie intensywne aplikacje, takie jak gry.
W rzeczywistości jest mniej skalowalny niż języki pełnoprawne, takie jak C++, c, java, itp., Które mogą znacznie lepiej skalować przy użyciu pełnej wielowątkowości. Umożliwia to skalowanie procesora, ale także otwiera puszkę z robakami. Aby współużytkować procesor, trzeba udostępniać dane, i to jest inna historia (semafory, blokady, itp.)
Możesz zrobić to samo, co plik node.js z dowolnym z powyższych języków, ale nie jest on częścią samego języka, więc musisz przetasować swój własny lub skorzystać z bibliotek, które go dostarczają. To powiedziawszy, nie jest takie trudne, ale zdecydowanie trudniejsze niż w node.js.
Większość usług internetowych jest związana z IO, więc Node.js pasuje dobrze, aw większości przypadków jest OK. Ale gdy zaczniesz intensywnie pracować z procesorem, zdarzenia nie będą obsługiwane i wszystko się zatrzyma. W takim przypadku lepiej użyć innego języka. W tym przypadku nie ma naprawdę dobrego rozwiązania w Węzłach. Możesz odradzać wiele procesów, ale wtedy nie będziesz mieć możliwości udostępniania danych między nimi. Bez współdzielenia danych nie ma możliwości efektywnego skalowania procesora, więc lepiej nie próbuj.
Użyj Node.js dla IO i trochę lepiej dopasowanego języka z odpowiednią wielowątkowością dla intensywnej pracy procesora.
Wszystkie interfejsy API węzła są napisane w taki sposób, że obsługują wywołania zwrotne.
Na przykład funkcja odczytu pliku może rozpocząć odczytywanie pliku i natychmiastowo przekazać sterowanie do środowiska wykonawczego, aby można było wykonać następną instrukcję. Po zakończeniu operacji wejścia/wyjścia pliku wywoła funkcję zwrotną, przekazując funkcję zwrotną, zawartość pliku jako parametr. Tak więc nie ma blokowania ani czekania na File I/O. Dzięki temu Node.js jest wysoce skalowalny, ponieważ może przetwarzać dużą liczbę żądań bez czekania, aż jakakolwiek funkcja zwróci wynik. - Punkt samouczek.
- 1. Jak skalowalny jest Grails?
- 2. window.open nie skalowalny, przewijane
- 3. jQuery UI skalowalny szczypta
- 4. Dlaczego program Arduino jest nazywany szkicem?
- 5. Dlaczego ten równoważny program nie jest kompilowany?
- 6. Dlaczego program UtteranceProgressListener nie jest interfejsem?
- 7. Dlaczego program psycopg2 IntegrityError nie jest przechwytywany?
- 8. Dlaczego Node.js nie jest kompilowany przed uruchomieniem?
- 9. Dlaczego Samsung Galaxy S ignoruje meta tag skalowalny przez użytkownika?
- 10. Node.js - program pośredniczący Expressjs rozszerzający res.render
- 11. Czy php jest skalowalny z długim sondowaniem wstecznym ajax?
- 12. Dlaczego cron nie wykonuje mojego skryptu node.js?
- 13. Dlaczego program InsertHelper był przestarzały?
- 14. node.js: program albo nieoczekiwanie wychodzi, albo po prostu zawiesza się
- 15. Dlaczego ten program zachować upaść
- 16. Dlaczego program iostream to time.h?
- 17. Dlaczego mój program python jest opóźniony do końca programu?
- 18. Dlaczego mój program onClick jest wywoływany przy renderowaniu? - React.js
- 19. Dlaczego mój program jest wolny? Jak mogę poprawić jego efektywność?
- 20. Dlaczego ten prosty program do analizy tekstu jest tak wolny?
- 21. Dlaczego dereferencje powodują, że mój program jest szybszy?
- 22. Dlaczego program obsługi ng-click jest uruchamiany dwa razy?
- 23. Maszynopis, dlaczego i kiedy potrzebny jest program Requjs.
- 24. zrzut pamięci sterty node.js, dlaczego pamięć ciągów jest za wysoka?
- 25. Dlaczego moduł podkreślenia nie jest dostępny w konsoli Node.js?
- 26. Dlaczego IndexedDB nie jest dostępny w pliku node.js?
- 27. Dlaczego plik node.js nie jest odpowiedni dla ciężkich aplikacji procesora?
- 28. Jak na razie widok skalowalny dotykowym
- 29. Jak działa node.js?
- 30. Dlaczego program Excel VBA działa znacznie szybciej, gdy program Outlook jest zamknięty?
Duplikat: [Scaling node.js] (http://stackoverflow.com/questions/4710420/scaling-node-js). –
@Jason Nie szukam odpowiedzi na kodowanie techniczne – vuvu
Ten post podkreśla skalowalność, w tym równoważenie obciążenia i redis. –