Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Hyperdrive : l'implémentation de système de fichiers de type POSIX conçue pour être une couche de stockage pour les apps P2P rapides
évolutives et sécurisées passe en version 10

Le , par Stéphane le calme

241PARTAGES

4  0 
Hyperdrive est une implémentation de système de fichiers de type POSIX, s'appuyant sur Node.js, qui est conçue pour être la couche de stockage pour les applications peer-to-peer rapides, évolutives et sécurisées. Pour la plupart des développeurs, travailler avec un Hyperdrive devrait ressembler à l'utilisation du module fs standard de Node, avec seulement des ajouts mineurs. L’objectif principal affiché par les auteurs du projet est de permettre de partager des systèmes de fichiers entiers avec d'autres à l'aide d'une seule clé de 32 octets (c'est-à-dire hyper://ab13d...).

Les lecteurs (drives, systèmes de fichiers Hyperdrive) sont parfaits pour les applications dans lesquelles un seul auteur (writer) souhaite distribuer de nombreuses collections de fichiers modifiables à de nombreux lecteurs. Une collection de fichiers peut être une vidéothèque, un blog personnel, un ensemble de données scientifiques, etc. Comme BitTorrent, les pairs peuvent télécharger des fichiers à partir d'autres pairs sans sacrifier la confiance (le contenu du lecteur est signé par l'auteur d'origine).

Contrairement à BitTorrent, les fichiers peuvent être ajoutés ou modifiés après la création d'un lecteur, et les pairs peuvent « surveiller » un lecteur pour les mises à jour, ce qui signifie que les notifications de mise à jour sont envoyées aux lecteurs en temps réel!

Plus important encore, les lecteurs prennent en charge les lectures de fichiers à accès aléatoire, ce qui signifie que vous pouvez rechercher une vidéo et télécharger uniquement les parties de la vidéo que vous regardez, à la demande. En voici un exemple :


Comment le protocole fonctionne-t-il ?

Sous le capot

Hyperdrive est construit à l'aide de deux structures de données de journal uniquement ajoutées appelées Hypercores, une pour un index de métadonnées efficace et une pour le contenu des fichiers binaires.

Meilleures performances et fiabilité

L'écosystème Hypercore Protocol a récemment connu des améliorations majeures, et Hyperdrive bénéficie directement de toutes ces améliorations. Plus important encore, Hyperdrive v10 exploite Hypertrie pour une meilleure indexation et Hyperswarm pour une meilleure mise en réseau.

La mise en réseau

Hyperswarm est une implémentation DHT soutenue par Kademlia qui est conçue spécifiquement pour les usages domestiques. Il utilise une approche distribuée de l'holepunching - les pairs de la DHT peuvent aider à booster les connexions avec d'autres pairs - permettant de traverser la grande majorité des routeurs domestiques.

Hyperswarm est également rempli d'heuristiques conçues pour fonctionner autour des nœuds hors ligne et maintenir les tables de routage saines. Lorsqu'elles sont combinées avec l'holepunching, les heuristiques rendent la découverte et la connexion à des pairs considérablement plus rapides.

Indexage

Hyperdrive v9 a utilisé une structure de données d'indexation qui fonctionnait bien pour les petits lecteurs, mais s'est rapidement dégradée lorsque les lecteurs ou les répertoires ont pris de l'ampleur. Dans la version 10, l’équipe utilise Hypertrie. Il évolue bien - en démo, elle a mis un miroir Wikipedia complet (des dizaines de millions de fichiers, répartis sur quelques répertoires) dans un lecteur, et les lectures sont restées très rapides.

Hyperdrive v10

Dans un billet de blog, Andrew Osheroff a annoncé la disponibilité de la version 10 :

« Au cours de la dernière année, nous avons travaillé dur sur la version 10 d'Hyperdrive. Après une longue période de tests bêta, nous sommes ravis d'annoncer qu'il est prêt pour une utilisation générale!

« Hyperdrive est un système de fichiers peer-to-peer conçu pour vous aider à partager des fichiers rapidement et en toute sécurité, directement depuis votre ordinateur. Hyperdrive v9, ainsi que de nombreux autres modules préfixés par `` hyper '', a servi de colonne vertébrale à Dat pendant de nombreuses années - vous pourriez déjà être familier avec Hyperdrive si vous avez creusé dans les internes de Dat.

« Avant cette version, nous avons fait un peu de restructuration: Hyperdrive et ses nombreux hyper-frères et sœurs vivent désormais sous une petite marque / organisation à vocation technique appelée Hypercore Protocol. En pratique, ce changement signifie très peu au-delà de la marque, mais nous espérons qu'il donnera aux modules une chance de briller par eux-mêmes. À la lumière de cela, voici un aperçu de Hyperdrive ».

Pour cette version, l’équipe s’est concentrée sur les fonctionnalités qui améliorent la convivialité, simplifient la gestion des lecteurs et réduisent le frottement du partage. Les deux plus éléments qui ont été présentés sont les mounts, qui vous permettent de créer des Hyperdrives imbriqués, et le démon Hyperdrive, pour servir de guichet unique pour la gestion des collections de lecteurs.

Hyperdrive Mounts

Hypercore offre à Hyperdrive bon nombre de ses fonctionnalités intéressantes, telles que le téléchargement clairsemé « gratuitement » - la majeure partie du travail est gérée au niveau de cette couche. Hypercore, cependant, est fondamentalement une structure de données à auteur unique. L'auteur d'un core conserve une clé privée qui est utilisée pour signer toutes les données jointes, permettant aux lecteurs d'échanger des données entre eux sans crainte de falsification. Cependant, ne laisser qu'une seule personne (sur une seule machine!) Apporter des modifications à un lecteur est une grosse limitation. Sans surprise, la prise en charge de plusieurs auteurs est depuis longtemps l'une des fonctionnalités les plus demandées.

En v10, l’équipe ne propose pas encore une solution multiauteur générale; la résolution de plusieurs auteurs de manière évolutive, sans encourir de pénalités de performances majeures ni confondre l'UX, reste une question de recherche pour elle. Cela dit, la v10 introduit des mounts, qui sont à peu près des « liens » vers d'autres Hyperdrives qui ressemblent et agissent comme des répertoires normaux.


Les mounts offrent de nombreuses opportunités, à la fois pour un partage plus granulaire et pour des applications multi-utilisateurs amusantes. Du côté du partage, vous pouvez créer un répertoire projets/ qui contient des mounts comme projets/mon module, projets/mon-site-Web, en somme un lecteur pour chaque élément sur lequel vous travaillez. Avec les mounts, vous pouvez partager mon-site-Web seul, sans donner accès à tout dans les projets/. Ce modèle est particulièrement pratique dans le démon, dont nous parlerons ensuite.

Les choses deviennent plus intéressantes lorsque les lecteurs que vous montez ne vous appartiennent pas. L’équipe a eu beaucoup de succès avec un modèle de « groupes », dans lequel un « propriétaire de groupe » crée d'abord un lecteur de groupe de niveau supérieur, puis monte des « profils utilisateur » au sein du groupe:


En utilisant ce modèle, vous pouvez écrire un « groupware » simple qui agrège le contenu entre les utilisateurs, en utilisant un peu plus qu'un readdir récursif sur le lecteur de groupe. Par exemple, pour rechercher tous les articles de blog du groupe, vous pouvez rechercher tous les fichiers dans le répertoire blog/ de chaque utilisateur.

Le démon Hyperdrive

Hyperdrive est conçu avec un stockage modulaire et une mise en réseau à l'esprit - vous pouvez stocker le contenu du lecteur comme vous le souhaitez et vous pouvez le répliquer sur n'importe quel flux Node.js. Cette flexibilité présente des avantages, mais elle rend plus difficile le démarrage. À cette fin, l’équipe a créé un service d'arrière-plan multiplateforme (un démon) qui gère le stockage / la mise en réseau pour vous, tout en vous offrant diverses façons d'accéder aux lecteurs gérés par le démon.

Le démon est un service de longue date, il peut donc garder vos lecteurs en ligne et disponibles. C'est également excellent pour la santé de DHT: puisque le nœud de votre ordinateur est stable, la table de routage du DHT contient moins de nœuds hors ligne. Cela se traduit par des recherches de touches plus rapides, ce qui signifie des temps de chargement plus rapides.

Plus important encore, le démon sert de point central pour exposer les lecteurs à des services externes - actuellement, l’équipe prend en charge une API gRPC, avec une bibliothèque cliente Node.js correspondante et une interface FUSE.

« FUSE nous permet d'émuler un répertoire de système de fichiers natif à partir de notre code Node.js. Il nous permet de transformer les Hyperdrives en répertoires normaux sur votre ordinateur! Cela signifie que chaque fois que le démon est en cours d'exécution, vous pourrez accéder aux lecteurs directement à partir du Finder OSX, par exemple, en tant que répertoires virtuels dans ~/Hyperdrive.

« Avec FUSE, les lecteurs sont instantanément accessibles à d'autres programmes. Vous pouvez regarder des films à l'aide de VLC, charger des PDF à l'aide de votre programme de lecture préféré et utiliser les utilitaires Unix comme find et ls pour explorer les lecteurs ».

Source : blog Hyperdrive

Et vous ?

Avez-vous déjà entendu parler d'Hyperdrive ? Qu'en pensez-vous ?

Une erreur dans cette actualité ? Signalez-le nous !