Beim Lesen eines Buches über Einzelseiten-Webanwendungen kam ich zu einem Absatz, der mich zum Nachdenken brachte:
Node.js ist nicht blockierend und ereignisgesteuert. Auf den Punkt gebracht bedeutet dies, dass eine einzelne Node.js-Instanz auf bescheidener Hardware Zehntausende von gleichzeitig geöffneten Verbindungen verarbeiten kann , z.
Mir ist der Fall aufgefallen , dass der Raspberry Pi als Rails-Server verwendet wird. Wie wäre es also mit Node.js?
Wie richte ich meinen Raspberry Pi für die Bereitstellung einer Node.js-Anwendung ein?
Hat jemand versucht, gibt es Tipps & Tricks, vielleicht Fallstricke oder Einschränkungen zu berücksichtigen?
Bearbeiten: Um Missverständnisse oder Off- Topic zu vermeiden, konzentrieren wir uns im Kontext von Node.js weiterhin auf den Raspberry Pi:
- Wie gut eignet sich der Raspberry Pi für Node-Anwendungen?
- Wenn dies der Fall ist, wie kann man den Raspberry Pi für beste Ergebnisse fein abstimmen?
quelle
Antworten:
Node.js auf einem Raspberry Pi bekommen
Du kannst entweder:
Performance
Ich habe einen kurzen Leistungstest durchgeführt (um einen groben ersten Eindruck zu vermitteln):
Mein Raspberry Pi ist mit der Standardeinstellung memory_split (64) übertaktet (Turbo)
Die Tests wurden über mein lokales Netzwerk (802.11g Wifi) durchgeführt.
Ich habe das Standardbeispiel "Hello World" von der Node.js-Website verwendet:
Apache Bench Einstellungen:
ab -r -n 10000 -c 100 http://192.168.0.116:1337/
Daher sind diese Tests nicht repräsentativ für eine normale Webanwendung (sowohl in Bezug auf die Netzwerkverbindung als auch auf die Länge / Komplexität des übertragenen Inhalts).
Ergebnisse
Zum Vergleich habe ich auch nginx auf meinem Raspberry Pi installiert und den gleichen Test mit der Standardeinstellung "Willkommen bei nginx!" HTML-Datei:
Optimieren der Himbeer-Pi-Einstellungen
Verwenden Sie
raspi-config
, um die folgenden Einstellungen zu ändern:quelle
Webserver
Node.JS
kann als Webserverersatz auf dem Pi verwendet werden, und Sie können problemlos eigenständige oder einseitige Webanwendungen erstellen.Aber nur zu Ihrer Information, in den meisten realen Anwendungen wird empfohlen, Server wie die moderne
nginx
, leichtelighttpd
oder die klobige, aber voll funktionsfähige zu verwendenapache2
! Und dann script node.js, um die Site zu ergänzen.Offensichtlich sind die Möglichkeiten endlos und alles hängt davon ab, was Sie erreichen möchten.
Himbeer-Pi?
Auf dem Raspberry Pi kann jeder dieser Webserver ausgeführt werden. Es kann auch Node ohne ernsthafte Komplikationen ausführen und ist ohne komplizierte Anpassungen sehr schnell.
Der Raspberry Pi ist sehr leistungsfähig, aber am besten ist es, die Speichersplittung auf Grafik und RAM zu beschränken. Vergessen Sie die Verwendung einer IDE und machen Sie einfach alles über SSH. Wenn Sie wirklich mehr Saft benötigen, setzen Sie einen Kühlkörper auf den BCM-Chip und übertakten Sie ihn, wenn Sie sich sicher fühlen. Eine andere Möglichkeit wäre, mehrere Pi als Cluster zu verwenden, um den Lastenausgleich zu vereinfachen. Hier können Sie sich über Clustering informieren.
Aber müssen Sie wirklich node.js verwenden?
Node.JS
sollte verwendet werden, wenn Sie anfangen (oder damit rechnen), Hunderte und Tausende von Anforderungen zu erhalten, für die kleine Datenblöcke in der Datenbank gespeichert, zwischengespeichert oder mit minimalem Server-Overhead zurückgelesen werden müssen. Sie fahren es also mit JS auf dem Client, aberNode.JS
tatsächlich mit C / C ++. Was passiert also, wenn Sie ein benutzerdefiniertes Modul oder eine bestimmte Änderung im Basiscode benötigen?In einer Anwendung, die Webseiten bedient, übertrifft node.js Apache normalerweise nicht, beispielsweise bei einzelnen Anforderungen. Die nicht blockierende Funktion von node.js ist großartig, wenn Sie den größten Teil des Tages Tausende von Anfragen pro Sekunde haben. Hier würde Apache blockieren und abstürzen.
Ein echtes Beispiel
So erstellen und installieren Sie Node.js auf dem Pi *:
Offensichtlich ist nichts falsch daran, node.js anstelle von anderen zu verwenden und wie man node am besten lernt, wenn man nicht auf einem hübschen kleinen Gerät wie dem Pi sitzt. So können Sie den Code selbst kompilieren.
update: spätere Versionen von node (aktuelle Version ist v0.8.18) können ohne die folgenden speziellen Schritte erstellt werden
Als nächstes müssen wir den Compiler anweisen, die
armv6
Architektur für die Kompilierung zu verwenden:Kommentieren Sie dann die Zeilen ab der Markierung 157 aus, um die Teile vfp3 und simulator zu entfernen. Da dies ein JSON-ähnliches Objekt ist, denken Sie daran, das Komma in der
CPPDEFINES
Zeile zu entfernen !Dann der übliche Konfigurations-, Make-, Make-Installationsprozess. Hinweis: Ich musste den Speicherort des OpenSSL-Libpath manuell angeben:
Das wars, du solltest jetzt ein funktionierendes Node.JS installieren!
* Referenzen und Originalartikel
Aber wie in anderen Antworten erwähnt, können Sie einfach eine vorkompilierte Binärdatei herunterladen, die einfach funktioniert.
Schlussfolgerungen
Ein gutes Stück Pi ist nicht schlecht. Sie können auf dem Pi-Just so gut wie alles ausführen. Erwarten Sie keine Leistung auf Produktionsebene.
quelle
F: Wie gut eignet sich der Raspberry Pi für Node-Anwendungen?
A: Sehr gut geeignet :) Kein Zweifel.
F: Wenn dies der Fall ist, wie kann man den Raspberry Pi für beste Ergebnisse fein abstimmen?
A: Nicht! Konzentrieren Sie sich darauf, sehr gut gestaltete Knotenanwendungen zu schreiben. Das Optimieren Ihres Anwendungsskripts ist der richtige Weg.
Verwenden Sie einen Proxyserver, zum Beispiel nginex, nur aus einem Grund: Node.JS ist noch in den Kinderschuhen (im Vergleich zu Apache), sodass Sie davon ausgehen können, dass noch Sicherheitsprobleme zu entdecken sind.
quelle