What is ActiveJ FS?
ActiveJ FS is a lightweight asynchronous Java library that provides a tiny abstraction on
top of common file operations. It provides upload, download, append, list, copy, move, delete, and other
methods for operating with local, remote or distributed storage.
Where ActiveJ FS can be used?
There are several ActiveJ FS implementations:- Local ActiveJ FS designed for working with file systems located on a single machine. Ideal to implement a local file storage for your application, for example database storage, backup data storage, local logs storage, etc.
- Client/Server implementations for operating with files that are stored remotely. This implementation supports two protocols:
- Custom TCP-based binary protocol with zero overhead. Resembles FTP, but simpler and more efficient.
- HTTP protocol that allows to define a REST API. It also provides third-party clients like browsers access remote ActiveJ FS servers.
- Cluster ActiveJ FS is designed for distributed big data workload. It's optimized for processing large immutable datasets or append-only files. Cluster ActiveJ FS was intentionally made not POSIX-compilant and works only with immutable files. In this way the whole system is simple, lightweight and resilient to server or network failures. Also, this approach allows to avoid the overhead of master-slave architecture and synchronization of mutable files. With ActiveJ FS you can create distributed, scalable P2P file systems with built-in support for rebalancing, failover, and scalability.
- ActiveJ FS Adapters enable filtering, mounting, transforming file names, adding and removing prefixes, subdirectories, etc.
Efficiently work with distributed file storage
ActiveJ FS is an efficient and lightweight alternative for
kernel space distributed FS like Ceph or Apache Hadoop. ActiveJ FS is like IPFS on the scale
of a single data center It allows to create combined, fault-tolerant cluster NFS. Moreover,
ActiveJ FS contains a set of predefined communication strategies that can be
simply combined.
private RemoteFsClusterClient client;
...
Eventloop eventloop = Eventloop.create();
Map<Object, FsClient> clients = ...;
client = RemoteFsClusterClient.create(eventloop, clients)
.withReplicationCount(N / 2)
.withServerSelector(RENDEZVOUS_HASH_SHARDER);
Add ActiveJ FS to your project
Project background
ActiveJ FS is one of the ActiveJ technologies that also include lightning-fast serializers, bytecode generators, dependency injection tools and other technologies. To learn more about ActiveJ technologies, visit ActiveJ website.