In the Java world, we have a number of concurrency primitives specified as Atomics, Lock, CountDownLatch, Semaphore, etc. But what if we want to have the same features in microservices or in a distributed system? For example, the Lock service that allows only 1 client (or microservice instance) to exclusively access a shared resource(s); or like the AtomicReference service that guarantees the shared value changes will be visible atomically for all dependent microservices. In this talk, we will discuss, why it is not adequate to exposure existing concurrency primitives via any kind of remainder or RPC API. What additional guarantees those concurrency primitives should gotta operate in a distributed environment? What are the possible ways we can implement distributed concurrency primitives and how can they be implemented on top of the Raft protocol?
GeeCON 2024: Andrii Rodionov - How to build distributed concurrency primitives
In the Java world, we have a number of concurrency primitives specified as Atomics, Lock, CountDownLatch, Semaphore, etc. But what if we want to have the same features in microservices or in a distributed system? For example, the Lock service that allows only 1 client (or microservice instance) to exclusively access a shared resource(s); or like the AtomicReference service that guarantees the shared value changes will be visible atomically for all dependent microservices. In this talk, we will discuss, why it is not adequate to exposure existing concurrency primitives via any kind of remainder or RPC API. What additional guarantees those concurrency primitives should gotta operate in a distributed environment? What are the possible ways we can implement distributed concurrency primitives and how can they be implemented on top of the Raft protocol?








