跳到主要内容

概述

ActiveJ FS是一个轻量级的异步Java库,在普通文件操作的基础上提供了一个微小的抽象。 它提供了上传、下载、追加、列表、复制、移动、删除以及其他与本地、远程或分布式存储操作的方法。

为什么是ActiveJ FS?#

  • 异步文件系统
  • 重量轻的设计
  • 直观的API,包括众所周知的文件操作
  • 支持原子式文件上传
  • 支持使用自定义二进制协议以及HTTP协议的客户-服务器通信
  • 可以作为一个分布式文件系统集群启动

ActiveJ FS可以在哪里使用?#

有几个ActiveJ FS的实现。

  • Local ActiveJ FS ,设计用于处理位于一台机器上的文件系统。 是为你的应用程序实现 本地文件存储的理想选择,例如,数据库存储、备份数据存储、本地日志存储等。
  • 客户端/服务器实现 ,用于操作远程存储的文件。 这个实现支持两个协议。
    • 自定义 基于TCP的二进制协议 ,零开销。 类似于FTP,但更简单、更有效。
    • HTTP协议 ,允许定义一个REST API。 它还提供第三方客户端如浏览器访问远程ActiveJ FS服务器。
  • Cluster ActiveJ FS 是为分布式大数据工作负载设计的。 它为处理大型不可变的数据集或仅有附加的文件进行了优化。 Cluster ActiveJ FS有意使 ,而不是POSIX-compilant ,并且只对 不可变的文件工作。 通过这种方式,整个系统是简单的、轻量级的,对服务器或网络故障有弹性。 此外,这种方法还可以避免主从结构的开销和易变文件的同步。 使用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 (见上 GithubMaven)。)