Czytając książkę na temat aplikacji internetowych na pojedynczych stronach , doszedłem do akapitu, w którym pomyślałem:
Node.js jest nieblokujący i sterowany zdarzeniami. Krótko mówiąc, oznacza to, że pojedyncze wystąpienie Node.js na skromnym sprzęcie może obsłużyć dziesiątki lub setki tysięcy równoczesnych otwartych połączeń , takich jak te używane w wiadomościach w czasie rzeczywistym, co jest często bardzo pożądaną cechą współczesnych SPA.
Zauważyłem przypadek użycia Raspberry Pi jako serwera Rails , więc co powiesz na Node.js?
Jak skonfigurować Raspberry Pi do obsługi aplikacji Node.js?
Czy ktoś próbował, czy są jakieś porady i sztuczki, być może wpadki lub ograniczenia do rozważenia?
Edycja: Aby uniknąć nieporozumień lub nie-tematów, skupmy się na Raspberry Pi w kontekście Node.js:
- Jak dobrze Raspberry Pi obsługuje aplikacje Node?
- Jeśli tak, to w jaki sposób można dostroić Raspberry Pi, aby uzyskać najlepsze wyniki?
źródło
Odpowiedzi:
Pobieranie Node.js na Raspberry Pi
Możesz albo:
Występ
Zrobiłem szybki test wydajności (aby dać szorstkie pierwsze wrażenie):
My Raspberry Pi jest przetaktowany (Turbo) z domyślną pamięcią_split (64)
Testy przeprowadzono w mojej sieci lokalnej (Wi-Fi 802.11g).
Użyłem standardowego przykładu „Hello World” ze strony Node.js:
Ustawienia ławki Apache:
ab -r -n 10000 -c 100 http://192.168.0.116:1337/
Dlatego te testy nie są reprezentatywne dla normalnej aplikacji internetowej (zarówno dotyczącej połączenia sieciowego, jak i długości / złożoności przesyłanej treści).
Wyniki
Dla porównania zainstalowałem także nginx na moim Raspberry Pi i przeprowadziłem ten sam test z domyślnym „Welcome to nginx!” Plik HTML:
Optymalizacja ustawień Raspberry Pi
Użyj,
raspi-config
aby zmienić następujące ustawienia:źródło
Serwery WWW
Node.JS
może być używany jako zamiennik serwera WWW w Pi i możesz z łatwością tworzyć samodzielne lub jednostronicowe aplikacje internetowe.Ale tylko dla twojej informacji, w większości rzeczywistych aplikacji zaleca się używanie serwerów takich jak nowoczesny
nginx
, lekkilighttpd
lub masywny, ale w pełni wyposażonyapache2
! A następnie skrypt node.js, aby uzupełnić witrynę.Oczywiście możliwości są nieograniczone i wszystko zależy od tego, co chcesz osiągnąć.
Raspberry Pi?
Raspberry Pi może obsługiwać dowolny z tych serwerów WWW. Może także uruchamiać Węzeł bez żadnych poważnych komplikacji i jest naprawdę szybki, bez żadnych skomplikowanych poprawek.
Raspberry Pi jest bardzo zdolny, ale najlepiej byłoby zmienić podział pamięci na najmniejszą grafikę i większość pamięci RAM. Zapomnij o używaniu IDE i po prostu rób wszystko przez SSH. Jeśli naprawdę potrzebujesz więcej soku, umieść radiator na chipie BCM i podkręć go, gdy poczujesz się bezpiecznie. Inną opcją byłoby użycie wielu Pi jako klastra, aby pomóc w równoważeniu obciążenia. Możesz zacząć szukać tutaj informacji o klastrowaniu.
Ale czy naprawdę potrzebujesz użyć node.js?
Node.JS
był przeznaczony do użycia podczas uruchamiania (lub przewidywania), aby uzyskać setki i tysiące żądań, które wymagają przechowywania małych ilości danych w DB, buforowania lub ponownego odczytu przy minimalnym obciążeniu serwera. Więc sterujesz nim za pomocą JS na kliencie, aleNode.JS
tak naprawdę jest obsługiwany przez C / C ++. Co się stanie, jeśli potrzebujesz niestandardowego modułu lub określonej zmiany w kodzie podstawowym?W aplikacji obsługującej strony node.js zwykle nie przewyższa apache na przykład w przypadku pojedynczych żądań. Nieblokująca funkcja node.js jest świetna, jeśli masz tysiące żądań na sekundę przez większość dnia, w tym miejscu apache blokuje się i ulega awarii.
Przykład z prawdziwego świata
Aby zbudować i zainstalować Node.js na Pi *:
Oczywiście nie ma nic złego w używaniu node.js zamiast innych i jak najlepiej nauczyć się węzła, jeśli nie na schludnym małym urządzeniu, takim jak Pi. Możesz więc samodzielnie skompilować kod w ten sposób.
aktualizacja: późniejsze wersje węzła (aktualna wersja to v0.8.18) można zbudować bez specjalnych kroków opisanych poniżej
następnie musimy powiedzieć kompilatorowi, aby użył
armv6
architektury do kompilacji:Następnie skomentuj linie zaczynające się od znaku 157, aby usunąć części vfp3 i symulatora. Ponieważ jest to obiekt podobny do JSON, pamiętaj, aby usunąć przecinek z
CPPDEFINES
linii!Następnie zwykły proces konfiguracji, wykonania, instalacji, NB. Musiałem ręcznie określić lokalizację libpath OpenSSL:
Właśnie dlatego powinieneś mieć działającą instalację Node.JS!
* Referencje i oryginalny artykuł
Ale jak wskazano w innych odpowiedziach, możesz po prostu pobrać wstępnie skompilowany plik binarny, który po prostu zadziała.
Wnioski
Dobry kawałek Pi nie jest zły. Na Pi możesz uruchomić prawie wszystko - po prostu nie oczekuj wydajności na poziomie produkcyjnym.
źródło
P: W jakim stopniu Raspberry Pi nadaje się do obsługi aplikacji Node?
Odp .: Bardzo dobrze pasuje :) Bez wątpienia.
P: Jeśli tak, to w jaki sposób można dostroić Raspberry Pi, aby uzyskać najlepsze wyniki?
Odp .: Nie! Skoncentruj się na pisaniu bardzo dobrze zaprojektowanych aplikacji węzłowych. Najlepszym rozwiązaniem jest optymalizacja skryptu aplikacji.
Zawsze używaj serwera proxy, na przykład nginex, tylko z jednego powodu: Node.JS jest jeszcze w dzieciństwie (w porównaniu z Apache), więc możesz założyć, że wciąż są problemy bezpieczeństwa.
źródło