Eine schnelle Node.js-Microservices-Engine zum Ausführen von Cloud-Funktionen mit geringer Latenz. Admin-Dashboard enthalten.
Entdecken Sie die Dokumente »
Fehler melden · Funktion anfordern
Die Boltz Engine ist eine schnelle und geclusterte Node.js-Microservices-Engine, die Instanzen bei einem Kaltstart in 100 ms startet und nachfolgende Interaktionen mit Funktionen unter normalen Bedingungen unter 10 ms liegen. V8-VM-Instanzen werden zum Trennen von Kontexten verwendet und ermöglichen Ihnen die Architektur Ihres Codes als selbstgehostete Mikrodienste, die mit cloudbasierten Diensten interoperabel sind. Multithreading bedeutet, dass Ihre Instanzen im gesamten Cluster über alle Ihre CPU-Kerne skaliert werden. Mit einer Admin-API können Sie Boltz über die mitgelieferte Admin-Oberfläche verwalten.
Laden Sie es von der Release-Seite herunter und führen Sie dann die Datei start.sh oder start.bat aus, um Boltz zu installieren und auszuführen.
Oder ziehen Sie es von bsnk/boltz-engine
auf Docker Hub und richten Sie die folgenden Schritte ein:
Erstellen Sie eine config.json und eine Secrets.json – Sie können diese von einer Veröffentlichung auf der Veröffentlichungsseite herunterladen
Legen Sie sie in einen Ordner, hier wären boltz-data
Führen Sie das Docker-Image mit aus
$ docker run --publish 5000:5000 --publish 8000:8000 -v /boltz-data:/boltz -v /boltz-data:/secrets/ -v /boltz-data:/database -v /boltz-data/sandbox:/sandbox/ bsnk/boltz-engine:latest
Sie können diese Ordner nach Ihren Wünschen ändern und die verwendeten Ports in config.json und im Startbefehl anpassen. Sie sollten wahrscheinlich auch eine Version von Boltz wie 1.1.0
anstelle der neuesten Version verwenden, um sicherzustellen, dass in der Produktion keine Fehler auftreten. In /boltz wird im Container nach der Datei config.json gesucht, der Rest kann gemäß der Dokumentation angepasst werden.
Mit Boltz können Sie VM-Instanzen zum Empfangen und Verarbeiten von Webanfragen sowie Volumes zum Speichern von Code und Konfigurationen erstellen und Daten vorübergehend auf einer virtuellen Festplatte speichern. Alle Änderungen werden gelöscht, wenn die Instanz oder das Volume neu geladen werden muss.
Pakete werden aus package.json geladen und in Sandbox-Ordnern im Host-Dateisystem installiert. Sie werden mit allen Instanzen geteilt, die dasselbe Volume im selben Prozess verwenden.
Die Verwendung der Boltz Engine wird für einfache Microservices-Projekte empfohlen, die später mit einem geeigneten Cloud-Produkt skaliert werden können. Der Overhead und die Lernkurve sind gering, sodass Sie sich auf die Funktionalität Ihres Projekts konzentrieren können und es nicht für die Ausführung auf einer Cloud-Plattform einrichten müssen, wenn es leicht genug ist, um lokal bearbeitet zu werden. Es ist außerdem superschnell und liefert Ergebnisse auf Ihrem lokalen Computer in weniger als 10 ms, statt in Tausenden von Millisekunden bei normalen Cloud-Funktionen. Darüber hinaus ist es mit der mitgelieferten Admin-Oberfläche einfach zu bedienen.
Der Boltz-Motor hat einige Probleme, darunter:
Große Paketinstallationsgröße aufgrund der Implementierung einzelner Volume-Node_Module-Sandboxen.
Die Admin-API verwendet die Basisauthentifizierung, was bedeutet, dass Sie den Server neu starten müssen, um das Passwort zu ändern.
Unter Verwendung einer GCP Cloud Shell-Instanz wurde eine Funktion beauftragt, den name
mit einem Ausrufezeichen zu wiederholen, und sie führte wie folgt aus:
Verwendung eines einzelnen Worker-Prozesses: 4500-5000
Anfragen pro Sekunde bei einer Latenz von 50ms
.
Verwendung von vier Worker-Prozessen: 5500-6000
Anfragen pro Sekunde bei einer Latenz von 4-8ms
.
Wenn wir dieselbe Funktion mit einem Worker verwenden, können wir 1000
gleichzeitige Verbindungen mit 200,000
Anfragen mit einer Latenz von etwa 100ms
und 5600rps
erreichen.
Boltz akzeptiert Pull-Anfragen zur Verbesserung der Engine oder der Weboberfläche, die sich hier im Web-Repo finden. Es verwendet Typoskript mit dem Google-Eslint-Regelsatz. Versuchen Sie also, konsistent zu bleiben und die Leistung sicherzustellen.
Wenn Sie bereit sind, Ihre Änderungen zu verteilen, müssen Sie sicherstellen, dass sich die Webdateien im public
Verzeichnis befinden. Andernfalls führen Sie einfach die Weboberfläche im Entwicklungsmodus neben der Engine aus.
Copyright 2021 bsnk-dev
Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die „Software“) erhält, kostenlos die Erlaubnis erteilt, mit der Software ohne Einschränkung zu handeln, einschließlich und ohne Einschränkung der Rechte zur Nutzung, zum Kopieren, Ändern und Zusammenführen , Kopien der Software zu veröffentlichen, zu verteilen, unterzulizenzieren und/oder zu verkaufen und Personen, denen die Software zur Verfügung gestellt wird, dies zu gestatten, vorbehaltlich der folgenden Bedingungen:
Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
DIE SOFTWARE WIRD „WIE BESEHEN“ ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL SIND DIE AUTOREN ODER URHEBERRECHTSINHABER HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE HAFTUNG, WEDER AUS EINER VERTRAGLICHEN HANDLUNG, AUS HANDLUNG ODER ANDERWEITIG, DIE SICH AUS, AUS ODER IN ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN HANDELN IN DER SOFTWARE ERGEBEN SOFTWARE.