java.util.concurrent for Distributed Coordination

30.05.2019, 12:00-13:00
Presentation

The long-lasting java.util.concurrent APIs can be extended for distributed execution in order to be used for coordination tasks. In this talk, we will explore the new java.util.concurrent implementation of Hazelcast on top of the Raft consensus algorithm.

The evolution of distributed coordination tools shows that high-level APIs eases the implementation of coordination tasks, such as leader election, locking, synchronized actions. For instance, The Chubby paper highlights familiarity of lock-based interfaces. Apache Curator hides the complexity ZooKeeper recipes behind Java APIs, while etcd and Consul implement concurrency primitives on their own.

A different path in this journey would be extending the long-lasting java.util.concurrent APIs for distributed coordination. Hazelcast follows this path by offering distributed implementations of Java locks, semaphores, and other concurrency primitives. Unfortunately, these implementations were suffering from consistency issues.

In this talk, we will explore the new java.util.concurrent implementation of Hazelcast on top of the Raft consensus algorithm. We will walk through code samples to see how Java locks, semaphores, etc. can be used in distributed environments that involve partial failures.