Un moteur de microservices Node.js rapide pour exécuter des fonctions cloud avec une faible latence. Tableau de bord d'administration inclus.
Explorer les documents »
Signaler un bug · Fonctionnalité de demande
Le moteur Boltz est un moteur de microservices Node.js rapide et clusterisé, démarrant les instances à partir d'un démarrage à froid en 100 ms, et les interactions ultérieures avec les fonctions tombent en moins de 10 ms dans des conditions normales. Les instances de VM V8 sont utilisées pour séparer les contextes et vous permettent d'architecturer votre code sous forme de microservices auto-hébergés interopérables avec les services basés sur le cloud. Le multithreading signifie que vos instances sont mises à l'échelle sur l'ensemble du cluster et sur tous vos cœurs de processeur. Une API d'administration vous permet de gérer Boltz à partir de l'interface d'administration incluse.
Téléchargez à partir de la page des versions, puis exécutez le fichier start.sh ou start.bat pour installer et exécuter Boltz.
Ou extrayez depuis bsnk/boltz-engine
sur Docker Hub et configurez les étapes suivantes :
Créez un config.json et un secrets.json – vous pouvez les télécharger à partir d'une version sur la page des versions.
Placez-les dans un dossier, ici serait boltz-data
Exécutez l'image Docker avec
$ 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
Vous pouvez modifier ces dossiers à votre guise et personnaliser les ports qu'il utilise dans config.json et dans la commande start. Vous devriez probablement également utiliser une version de Boltz comme 1.1.0
au lieu de la dernière pour vous assurer que les bogues n'apparaissent pas en production. /boltz est l'endroit où il recherchera le fichier config.json à l'intérieur du conteneur, et le reste peut être personnalisé en fonction de la documentation.
Boltz vous permet de créer des instances de VM pour recevoir et traiter des requêtes Web, ainsi que des volumes pour stocker du code et des configurations, et vous permet de sauvegarder temporairement des données sur un disque virtuel. Toutes les modifications sont effacées lorsque l'instance ou le volume doit être rechargé.
Les packages sont chargés à partir du package.json et installés dans des dossiers en bac à sable sur le système de fichiers hôte, ils sont partagés avec toutes les instances utilisant le même volume sur le même processus.
L'utilisation recommandée du moteur Boltz est destinée aux projets de microservices simples qui peuvent ensuite être mis à l'échelle avec un produit cloud approprié. Il présente une faible surcharge et une faible courbe d'apprentissage, vous permettant de vous concentrer sur les fonctionnalités de votre projet et de ne pas le configurer pour qu'il s'exécute sur une plate-forme cloud lorsqu'elle est suffisamment légère pour être gérée localement. Il est également ultra rapide, donnant des résultats sur votre machine locale en moins de 10 ms, au lieu de milliers de millisecondes avec les fonctions cloud normales. De plus, il est facile à utiliser grâce à l'interface d'administration incluse.
Le moteur Boltz a quelques problèmes, notamment :
Taille d'installation du package importante en raison de la mise en œuvre de bacs à sable node_modules à volume individuel.
L'API d'administration utilise l'authentification de base, ce qui signifie que vous devez redémarrer le serveur pour modifier le mot de passe.
À l'aide d'une instance GCP Cloud Shell, une fonction a été chargée de répéter le paramètre de requête name
avec un point d'exclamation, et elle a fonctionné comme suit :
Utilisation d'un seul processus de travail : 4500-5000
requêtes par seconde avec une latence de 50ms
.
Utilisation de quatre processus de travail : 5500-6000
requêtes par seconde avec une latence de 4-8ms
.
En utilisant la même fonction avec 1 travailleur, nous pouvons réaliser 1000
connexions simultanées effectuant 200,000
requêtes avec une latence d'environ 100ms
et 5600rps
.
Boltz accepte les demandes d'extraction pour améliorer le moteur ou l'interface Web, situées dans le dépôt Web ici. Il utilise du TypeScript avec l'ensemble de règles Google Eslint, alors essayez de rester cohérent et de le maintenir performant.
Lorsque vous êtes prêt à distribuer vos modifications, vous devez vous assurer que les fichiers Web se trouvent dans le répertoire public
, sinon exécutez simplement l'interface Web en mode développement à côté du moteur.
Copyright 2021 bsnk-dev
L'autorisation est accordée par la présente, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le « Logiciel »), d'utiliser le Logiciel sans restriction, y compris, sans limitation, les droits d'utilisation, de copie, de modification, de fusion. , publier, distribuer, accorder des sous-licences et/ou vendre des copies du Logiciel, et permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve des conditions suivantes :
L'avis de droit d'auteur ci-dessus et cet avis d'autorisation doivent être inclus dans toutes les copies ou parties substantielles du logiciel.
LE LOGICIEL EST FOURNI « EN L'ÉTAT », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS LIMITATION LES GARANTIES DE QUALITÉ MARCHANDE, D'ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. EN AUCUN CAS LES AUTEURS OU LES TITULAIRES DES DROITS D'AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGES OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION CONTRACTUELLE, DÉLIT OU AUTRE, DÉCOULANT DE, DE OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES TRANSACTIONS DANS LE LOGICIEL.