Eventuate is a toolkit for building distributed, highly-available and partition-tolerant event-sourced applications. It is written in Scala and built on top of Akka, a toolkit for building highly concurrent, distributed, and resilient message-driven applications on the JVM. Eventuate
- allows actors to interact over a distributed, reliable and persistent event bus that preserves causal event ordering
- derives current application state from logged events (event sourcing)
- replicates application state by replicating events across multiple locations
- allows updates to replicated state at multiple locations concurrently (multi-master)
- allows individual locations to continue writing even if they are partitioned from other locations
- provides means to detect, track and resolve conflicting updates (interactive and automated)
- enables applications to implement a causal consistency model
- provides implementations of operation-based CRDTs
- supports distribution up to global scale