State-based conflict-free replicated data type implementation

Scalable, distributed eventually-consistent key-value storage

ActiveJ CRDT is a lightweight and efficient alternative to Redis and other key-value stores. Create applications that merge data from multiple nodes into a single CRDT structure.

ActiveJ CRDT supports familiar data structures such as maps, sets, and counters. These types are represented by CRDT types such as:
  • Grow only set, map and counter
  • Last-write-wins set and object
  • Positive-negative counter
  • Two-phase set
ActiveJ CRDT supports custom binary protocol for commucation between peers via TCP.

This multi-utility library is suitable for many use cases: from collaborative editing solutions to apps with rapidly changing and actively requested data.
CrdtStorageMap<String, TimestampContainer<Integer>> remoteStorage =
    CrdtStorageMap.create(eventloop, CRDT_FUNCTION);

CrdtServer<String, TimestampContainer<Integer>> server =
    CrdtServer.create(eventloop, remoteStorage, INTEGER_SERIALIZER)
        .withListenAddress(ADDRESS);
server.listen();

CrdtStorage<String, TimestampContainer<Integer>> client =
        CrdtStorageClient.create(eventloop, ADDRESS, INTEGER_SERIALIZER);

CrdtStorageMap<String, TimestampContainer<Integer>> localStorage =
        CrdtStorageMap.create(eventloop, CRDT_FUNCTION);

StreamSupplier.ofPromise(localStorage.download())
        .streamTo(StreamConsumer.ofPromise(client.upload()));

Add ActiveJ CRDT to your project

Here is how to add the ActiveJ CRDT Maven repository to your project. Note that ActiveJ CRDT utilizes ActiveJ platform and ActiveJ FS libraries, so they will be automatically integrated into your project.
<dependency>
    <groupId>io.activej</groupId>
    <artifactId>activej-crdt</artifactId>
    <version>1.1</version>
</dependency>

Project Background

ActiveJ CRDT is one of the ActiveJ technologies that include cloud solutions, lightning-fast serializers, DI, bytecode generators and other technologies. To learn more about ActiveJ ecosystem, visit website of the core ActiveJ technology - ActiveJ framework.