概述
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.5 (见上 Github 或 Maven)。)