Je simulé en utilisant un code de navigateur minier, plus compliqué, mais ne vont pas tordu la route

Cliquez sur l'attention InfoQ , Haut du public No.

8:00 technologie de réception petit-déjeuner programmeur

Auteur | Ben

Edit | Martin, Guo Lei

Source Shu parler de l'architecture

Bitcoin récent incendie, la chaîne de blocs d'incendie, même mes une des villes à quatre niveaux, pas comment communiquer avec l'Internet hier les étudiants des écoles élémentaires sont impatiemment appelés à me demander, cette vague de vague de blocs de la chaîne dans la façon dont il devrait faire de l'argent.

Avant de publier une série d'articles parler de chaîne de blocs d'architecture pour introduire la technologie, pensez vraiment intéressant, la façon dont le montant de la lecture qui aurait fait est pas élevé, mais maintenant, tout à coup d'un grand nombre de chaînes de bloc média. Bien sûr, nous avons également fait un certain nombre de rapports publics de la technologie chaîne de blocs focused: l'avant-poste de la chaîne de bloc, nous nous félicitons de l'attention.

Avant, je suppose que beaucoup de gens ont remarqué eu ces nouvelles, il y a des sites pour adultes à voir Bitcoin après la montée en flèche, il a commencé à jouer l'idée de l'exploitation minière. Ils secrètement cachés dans mon propre code minier du site, et lorsque l'utilisateur visite ces sites, ils se sentiront rapidement mystérieusement courir à ces codes miniers, même après que l'utilisateur ferme le navigateur, la source va continuer à fonctionner et ressources CPU.

Ceci est une traduction de l'article publié aujourd'hui, l'auteur Ben est un des développeurs étrangers supérieurs. Après avoir vu ces nouvelles, aussi perdu dans ses pensées. Sous un autre angle, Si elle ne l'exploitation minière, mais le monde du navigateur Web connecté par websocket ensemble, il ne peut former un « super-ordinateur », et utiliser le super-ordinateur pour résoudre le problème de la distribution?

Alors, il a commencé une nouvelle tentative. Parlez de l'architecture sur cet article a été traduit, ce qui suit est le texte intégral.

EDITORIAL

Nous allons discuter d'un sujet controversé - comment les ressources informatiques « voler » à partir du navigateur d'un site Web visiteur. Il y a beaucoup de discussions sur la façon d'utiliser le navigateur pour exploiter la monnaie numérique, mais je ne veux pas les rejoindre pour discuter de ces sujets, je veux juste explorer une utilisation efficace des ressources informatiques.

La capacité d'exécuter du code du navigateur Web de plus en plus puissant. développement JavaScript, WebAssembly l'émergence de l'évolution du GPU pour améliorer l'accessibilité et les modèles de filetage, ces facteurs, que le navigateur avec tout ordinateur doté d'une puissance de calcul puissant. Avec la montée de la machine d'extraction du navigateur monnaie numérique, je pense aussi à cette question: comment intégrer le monde des ressources informatiques en une seule entité - un super-ordinateur par le composant du navigateur du visiteur du site.

Comme un cluster informatique ordinaire, le super-ordinateur de tous Compute pour résoudre un problème commun sous la coordination. Mais grappe d'ordinateurs ordinaires est différent est que ces nuds de calcul temporaires (ainsi que les visiteurs du site aller et venir), mais avant qu'ils ne peuvent pas parler les uns aux autres (pas de demande intersite).

Ceci est un exemple que je peux penser à:

Le droit est le super serveur de contrôle de l'ordinateur. Gauche est de visiter un navigateur de site Web, qui est un noeud du super-ordinateur, qui montre également son indice de CPU.

Le super-ordinateur pour résoudre le problème est de trouver une valeur de hachage donnée de la valeur d'origine. Comme on peut le voir sur la figure, un total de 23 noeuds impliqués dans le calcul, calculer et comparer les valeurs de hachage 380,204,032, dont les visiteurs ont contribué à hauteur de 50 pour cent de la puissance.

code mise en uvre

Cette technique est principalement utilisé websocket une connexion persistante entre le serveur et les noeuds de calcul. Le comportement de connexion pour le noeud coordinateur, de sorte qu'ils deviennent une entité de coopération mutuelle. websocket peut transférer les messages de code et de collaboration, de sorte que tout est possible.

websocket a changé radicalement l'apparence du comportement du client Web. Le client se connecte au site Web, JavaScript effectuent pré-définis, et d'autres websocket après avoir établi la connexion, vous pouvez effectuer d'autres scripts JavaScript.

côté droit figure du serveur de commande est un super-ordinateur, client Web gauche reçoit l'instruction dynamique.

Si une application utilisant WebView, JavaScript peut directement aller à l'App, qui est, vous pouvez passer par le code de transmission de websocket WebView directement sur le territoire App.

à droite la figure côté du serveur de contrôle est un super-ordinateur, à gauche instructions de réception Web App. On peut voir directement pénétrer dans l'instruction couche App.

Le reste est rien de nouveau vers le haut. App est disponible par C & C protocole (Botnet Command and Control) La directive, les pages Web peuvent être obtenus de script JavaScript dynamique après la charge initiale et websocket vraiment dynamique (contrairement à Ajax mode pull d'interrogation) peut être utilisé sur plusieurs navigateurs et le fonctionnement de l'équipement, et ont accès à l'environnement d'exploitation.

Par conséquent, nous pouvons transmettre au nud informatique par code d'instruction WebSocket, bien sûr, être également utilisé pour transmettre des messages à mettre en uvre la coordination distribuée.

Crackzor.js

Il y a six ans, j'ai développé un cracker de mot de passe OpenMPI base distribuée (ben.akrin.com/?p=1424), appelé crackzor.

Mot de passe fissuration est un problème distribué très typique qui est simple, qui est de deviner le mot de passe par les permutations et les combinaisons de caractères. J'utilise JavaScript pour réécrire le crackzor, l'utilisation websocket remplacé OpenMPI.

Cependant, chaque problème distribué est pas la même chose, crackzor pas une bonne façon de résoudre tous les problèmes. crackzor magique sa flexibilité, il est agencé de manière à diviser un caractère spatial combiné en plusieurs blocs, ces blocs ont ensuite évalué au noeud de calcul. Après un problème donné à résoudre, et les positions de début et de fin d'itération, le nud peut commencer à travailler, ne pas besoin de leur fournir les permutations et les combinaisons de caractères, donc il n'y a pas de goulots d'étranglement de bande passante réseau.

La première question: comment maximiser l'utilisation des nuds CPU

JavaScript est utilisé par défaut est le modèle mono-thread, le code envoyé au client par websocket, par défaut utilise un seul noyau de la CPU. Et la plupart des ordinateurs d'aujourd'hui sont multi-core CPU, donc nous devons trouver un moyen d'utiliser les CPU.

paru si sauveur --web travailleur. HTML 5 offre cette fonctionnalité simplifie considérablement la mise en uvre de multi-thread. Cependant, nous avons aussi besoin de résoudre un problème. documents Web travailleurs nous disent charger le fichier de script à partir du fichier, mais notre code est transmis sur par websocket et du stockage en mémoire, donc nous ne pouvons pas exécuter du code directement en spécifiant les fichiers de script.

Nous résolvons ce problème en conditionnant le code dans un objet Blob:

var worker_code = 'alerte ( "ce code est enfilée sur les noeuds");' window.URL = window.URL || window.webkitURL; blob var; try {blob = new Blob (\ {Type: application / javascript '});} catch (e) {window.BlobBuilder = window.BlobBuilder || || window.WebKitBlobBuilder window.MozBlobBuilder; blob = new BlobBuilder; blob.append (worker_code); blob = blob.getBlob;} workers.push (nouveau travailleur (URL.createObjectURL (blob)));

La deuxième question: répartition des tâches entre les nuds

serveur websocket ours plus de la coordination de suivi, il a besoin de garder le noeud d'accès au réseau et à la sortie, et si un nud effectuant des tâches informatiques et Assigner des tâches à leur disposition dans les nuds disponibles.

Le serveur doit être en cours d'exécution à travers la connexion de processus à partir du nud. Cependant, ce supercalculateur peut avoir besoin de résoudre différents problèmes tous les jours. A cette fin, je l'ai écrit une fonction pour lire un fichier et l'exécution du fichier code. Cette fonction est invoquée par un processus.

fonction eval \ code_ \ _from_file {if (! file_exists ( "/ tmp / code")) {console.log ( "Erreur: fichier / tmp / code n'existe pas");} else {code var = read_file ( « / tmp / code « ); code = code.toString; eval (code);}} process.on ( 'SIGUSR1', eval \ _Code \ _from_file.bind);

Avec cette fonction, la prochaine fois que je peux tuer l'ancien processus, puis utiliser le nouveau processus de chargement du nouveau code. Cela est dû à la flexibilité de JavaScript, cette flexibilité nous permet d'exécuter du code arbitraire à tout moment, tant qu'il y a un accès complet à l'environnement d'exploitation.

Donnez la tâche de distribution de nud est très simple, tant que le client enregistre une fonction de rappel lors de la connexion au serveur, vous pouvez alors exécuter du code dans la fonction de rappel.

Tels que le client:

var websocket_client = io.connect ( " websocket_client.on (. "eval_callback", la fonction (data) {data = atob (data), eval (data)} bind);

Côté serveur:

client_socket.emit ( "eval_callback", nouveau tampon ( "alert ( 'ce code sera exécuté sur le client');") Tost.

Jusqu'à présent:

  • Tous nud temporaire (le navigateur Web de l'utilisateur d'un site Web) pour se connecter au serveur websocket;

  • Par processus de websocket signale la mise en uvre du serveur du nouveau code;

  • Le nouveau code contient un nouveau problème de nud à résoudre;

  • Le nouveau code indique au serveur comment coordonner noeud websocket;

  • Une fois un nud pour résoudre le problème, puis face à la question suivante;

  • Maintenant que nous savons comment utiliser un navigateur Web pour construire un super-ordinateur. Pour diverses considérations, telles que la lisibilité, la sécurité et la complexité des problèmes, je ne veux pas mettre tout mon code rendu public. Cependant, si quelqu'un est intéressé, vous pouvez me contacter, je suis heureux de partager avec beaucoup d'idées.

    plus de conseils

    • Lorsque la tâche de partage, la tâche n'est pas trop grand. Parce que les nuds sont temporaires, si la tâche est trop lourde, plus d'interruption probable se produit. La plupart des navigateurs Web pour refuser ou mettre fin code d'exécution est trop de ressources, et de petites tâches peuvent être accomplies en quelques secondes, il ne sera pas interrompue.

    • Mis en uvre en utilisant JavaScript MD5: https: //gist.github.com/josedaniel/951664.

    • Le temps moyen pour résoudre les enregistrements de nud de problème utilisé, le noeud exclu en cours d'exécution lente, afin de ne pas affecter la performance globale « super ordinateur ».

    190326 archéologique "Zhu Xian," carte Mei Mei Liying Baguio commencer à marcher!
    Précédent
    Pourquoi la voiture électrique pendant une longue période pour ouvrir non utilisé pour alimenter la voiture?
    Prochain
    Nous avons fait une enquête dernière décennie cinq merveilleux standings drame HBO
    « Vous êtes contre le courant »: le divorce élevé au miel Zou Kai, Zou Kai Wang Yu voir, le miel, les genoux élevés et lui demanda pardon?
    "Battlefield 1" Mythbusters Episode: s'il y a un ricochet?
    Prix de départ 249 yuans, gravé Logitech MX518 Gaming Mouse classique
    Derrière les mystérieux événements de signaux radio, il y a un drame américain à propos de thème extraterrestre
    Âgé de 43 ans Ruby est un fan du visage sourire raide arrière était ridicule parfois exposé, de ne pas se livrer à la cause de la cuisine d'amour?
    « Quatre hommes domestique » mer, comment enregistrer?
    Nettoyez la poussière se sentent trop de problèmes? Les déchets de nettoyage pour savoir
    Dialogue Hu Shiwei: Après avoir obtenu les trois grandes banques publiques aux mêmes actions de temps, le quatrième paradigme pour fournir une valeur AI pour l'entreprise
    Je ne sais pas combien de gens se souviennent ce dans la comédie romantique fantastique de 1980 Hollywood
    Après des rumeurs de divorce Brigitte Lin débuts bon état, les souvenirs de la coopération passée avec Maggie Cheung: Elle a une très faible estime de soi
    moteur « mort brin » jeu PSX pour déterminer la nouvelle bande-annonce publiée