
Фото moren hsu Unsplash
Пара слов о Hyperdrive
Это POSIX-подобная файловая система для приложений с распределённой архитектурой. Её иерархия представлена единым деревом, а все объекты обладают двумя именами: абсолютное (от корня) и относительное (от текущего рабочего каталога). Hyperdrive разрабатывают авторы открытого P2P-браузера Beaker он позволяет размещать сайты прямо в браузере достаточно создать локальную папку и поделиться соответствующей ссылкой.
Как устроена система
Она реализована на Node.js её исходный код лежит на GitHub. По словам авторов, работа с Hyperdrive напоминает взаимодействие со стандартным модулем Node fs. Вот пример:
var hyperdrive = require('hyperdrive')var archive = hyperdrive('./my-first-hyperdrive') // content will be stored in this folderarchive.writeFile('/hello.txt', 'world', function (err) { if (err) throw err archive.readdir('/', function (err, list) { if (err) throw err console.log(list) // prints ['hello.txt'] archive.readFile('/hello.txt', 'utf-8', function (err, data) { if (err) throw err console.log(data) // prints 'world' }) })})
В основе Hyperdrive лежат две особые структуры под названием Hypercores. Это журналы, в которые можно только добавлять данные (append-only logs). Первый хранит индексные метаданные, а второй бинарники файлов. Имена файлов и папок проиндексированы с помощью префиксного дерева хешей, чтобы упростить поиск. В каком-то смысле оно служит быстрой системой типа ключ-значение. Целостность данных проверяется с помощью дерева Меркла с криптографической хеш-функцией BLAKE2b-256.
За обработку обращений пользователей к файловой системе отвечает специальный демон. Его CLI позволяют создавать, расшаривать и просматривать директории Hyperdrive. Демон поддерживает FUSE, поэтому диски Hyperdrive могут отображаться как обычные папки на системах Linux и Mac.
Где её используют
Hyperdrive подойдет для разработки распределённых приложений, которые напоминают по функциональности облачные хранилища. Например, её использует платформа с открытым исходным кодом ScienceFair. Она помогает исследователям искать научную литературу, журналы, статьи и выжимки из них, а также обмениваться собственными наработками.
Разумеется, свою файловую систему используют сами разработчики браузера Beaker. Она хранит данные, необходимые для отображения веб-сайтов.

Фото Clint Adair Unsplash
Hyperdrive лежит в основе протокола Dat. Он нужен для обмена данными в распределённых сетях. При передаче файлы разбиваются на небольшие фрагменты разных размеров и собираются в единый Dat-файл принимающей стороной. Система позволяет добавлять в него новые фрагменты, но не разрешает модифицировать или удалять существующие. Такой подход позволяет сохранить историю изменения документов.
Сегодня вокруг Dat уже сформировалось достаточно обширное сообщество, а его продвижением занимается специальный фонд Dat Foundation его поддерживает Mozilla и Code for Science & Society. В перспективе эти организации поспособствуют росту популярности как протокола Dat, так и файловой системы Hyperdrive.
О чем мы пишем в корпоративном блоге 1cloud.ru:



