Перейти к основному содержанию

Обзор

ActiveJ FS - это легкая асинхронная библиотека Java, которая предоставляет крошечную абстракцию поверх обычных файловых операций. Он обеспечивает выгрузку, загрузку, добавление, список, копирование, перемещение, удаление и другие методы для работы с локальным, удаленным или распределенным хранилищем.

Почему именно ActiveJ FS?#

  • Асинхронная файловая система
  • Легкий вес благодаря своей конструкции
  • Интуитивно понятный API, состоящий из хорошо известных файловых операций
  • Поддерживает атомарную загрузку файлов
  • Поддержка взаимодействия клиент-сервер с использованием пользовательского бинарного протокола, а также протокола HTTP
  • Может быть запущен как кластер распределенной файловой системы

Где можно использовать ActiveJ FS?#

Существует несколько реализаций ActiveJ FS:

  • Локальный ActiveJ FS предназначен для работы с файловыми системами, расположенными на одной машине. Идеально подходит для реализации локального файлового хранилища для вашего приложения, например, для хранения базы данных, резервного копирования данных, локального хранения журналов и т.д.
  • Клиент-серверные реализации для работы с файлами, которые хранятся удаленно. Данная реализация поддерживает два протокола:
    • Пользовательский бинарный протокол на базе TCP с нулевыми накладными расходами. Похож на FTP, но проще и эффективнее.
    • HTTP протокол , который позволяет определить REST API. Он также предоставляет сторонним клиентам, таким как браузеры, доступ к удаленным серверам ActiveJ FS.
  • Кластер ActiveJ FS предназначен для распределенной рабочей нагрузки больших данных. Он оптимизирован для обработки больших неизменяемых наборов данных или файлов, содержащих только приложения. Кластер ActiveJ FS был намеренно сделан не POSIX-совместимым и работает только с неизменяемыми файлами. Таким образом, вся система является простой, легкой и устойчивой к сбоям сервера или сети. Кроме того, этот подход позволяет избежать накладных расходов на архитектуру master-slave и синхронизацию изменяемых файлов. С помощью ActiveJ FS вы можете создавать распределенные, масштабируемые P2P файловые системы со встроенной поддержкой ребалансировки, отказоустойчивости и масштабируемости.
  • ActiveJ FS Adapters позволяют фильтровать, монтировать, преобразовывать имена файлов, добавлять и удалять префиксы, подкаталоги и т.д.

Потоковый доступ к файлам#

Операции upload() и download() используют модуль CSP , поэтому файлы загружаются/выгружаются с помощью асинхронных потоков данных.

String filename = "hello.txt";
Eventloop eventloop = Eventloop.create().withCurrentThread();Executor executor = Executors.newSingleThreadExecutor();
LocalActiveFs fs = LocalActiveFs.create(eventloop, executor, Paths.get("/tmp/file-storage"));
fs.start()        .then((() -> ChannelSupplier.of(ByteBufStrings.wrapAscii("Hello World"))                .streamTo(fs.upload(filename)))        .then(() -> fs.download(filename))        .map(supplier -> supplier.map(buf -> buf.asString(StandardCharsets.US_ASCII)))        .then(supplier -> supplier.streamTo(ChannelConsumer.ofConsumer(System.out::println)));
eventloop.run();

Добавьте ActiveJ FS в свой проект#

Вы можете добавить ActiveJ FS в свой проект, импортировав его репозиторий Maven. Эта документация охватывает последний выпуск ActiveJ FS v5.0-beta2 (см. на сайте Github или Maven).