atomix 0 travis-ci

Wait-free distributed coordination framework for building fault tolerant distributed systems on the Raft consensus algorithm

Atomix

Build Status Maven Central Gitter

Persistent • Consistent • Fault-tolerant • Asynchronous • Database • Coordination • Framework

Getting startedUser ManualJavadocRaft ImplementationJepsen TestsGoogle Group

Atomix is a high-level asynchronous framework for building fault-tolerant distributed systems. It combines the consistency of ZooKeeper with the usability of Hazelcast to provide tools for managing and coordinating stateful resources in a distributed system. Its strongly consistent, fault-tolerant data store is designed for such use cases as:

Examples

Users are encouraged to explore the examples in the /examples directory. Perhaps the most interesting/revelatory example is the leader election example. This example demonstrates a set of replicas that elect a leader among themselves.

To run the leader election example:

  1. Clone this repository: git clone --branch master https://github.com/atomix/atomix.git
  2. Navigate to the project directory: cd atomix
  3. Compile the project: mvn package
  4. Run the following three commands in three separate processes from the same root directory of the project:
java -jar examples/leader-election/target/atomix-leader-election.jar logs/server1 localhost:5000 localhost:5001 localhost:5002
java -jar examples/leader-election/target/atomix-leader-election.jar logs/server2 localhost:5001 localhost:5000 localhost:5002
java -jar examples/leader-election/target/atomix-leader-election.jar logs/server3 localhost:5002 localhost:5000 localhost:5001

Each instance of the leader election example starts an AtomixReplica, connects to the other replicas in the cluster, creates a DistributedGroup, to perform an election. The first time a node is elected leader it will print the message: "Elected leader!". When one of the processes is crashed, a new process will be elected a few seconds later and again print the message: "Elected leader!".

Note that the same election process can be done with AtomixClients as well. Atomix provides the concept of stateful nodes (replicas) which store resource state changes on disk and replicate changes to other replicas, and stateless nodes (clients) which operate on resources remotely. Both types of nodes can use the same resources in the same ways. This makes Atomix particularly well suited for embedding in server-side technologies without the overhead of a Raft server on every node.

See the website for documentation and examples.

Getting startedUser ManualJavadocRaft ImplementationJepsen TestsGoogle Group

Related Repositories

atomix

atomix

Wait-free distributed coordination framework for building fault tolerant distributed systems on the Raft consensus algorithm ...

atomix-jepsen

atomix-jepsen

Atomix Jepsen tests ...

trinity

trinity

A sweet Clojure API for Atomix ...

atomix-vertx

atomix-vertx

Atomix Vert.x cluster manager. ...

atomix

atomix

...


Top Contributors

kuujo jhalterman madjam electrical dmvk cgrotz oshothebig leventov mnicky rodolfodpk

Releases

-   atomix-1.0.0-rc9 zip tar
-   atomix-1.0.0-rc8 zip tar
-   atomix-1.0.0-rc7 zip tar
-   atomix-1.0.0-rc6 zip tar
-   atomix-1.0.0-rc5 zip tar
-   atomix-1.0.0-rc4 zip tar
-   atomix-1.0.0-rc3 zip tar
-   atomix-1.0.0-rc2 zip tar
-   atomix-1.0.0-rc1 zip tar
-   atomix-0.1.0-beta5 zip tar
-   atomix-0.1.0-beta4 zip tar
-   atomix-0.1.0-beta3 zip tar
-   atomix-0.1.0-beta2 zip tar
-   atomix-0.1.0-beta1 zip tar