/eventuate

Event-sourcing and distributed event collaboration with causal consistency

Primary LanguageScalaApache License 2.0Apache-2.0

Gitter Build Status Stories in Ready

Eventuate

Eventuate is a toolkit for building applications composed of event-driven and event-sourced services that collaborate by exchanging events over shared event logs. Services can either be co-located on a single node or distributed up to global scale. Services can also be replicated with causal consistency and remain available for writes during network partitions. Eventuate has a Java and Scala API, 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

  • provides event-sourcing abstractions for building stateful services on the command-side and query-side of CQRS-based applications
  • offers services a reliable and partition-tolerant event storage and event-based communication infrastructure that preserves causal ordering
  • supports the development of always-on applications by allowing services to be distributed across multiple availability zones (locations)
  • supports stateful service replication with causal consistency and concurrent state updates with automated and interactive conflict resolution options
  • supports the implementation of reliable business processes from collaborating services that are tolerant to inter-service network partitions
  • supports the aggregation of events from distributed services for updating persistent and in-memory query databases
  • provides implementations of operation-based CRDTs as specified in A comprehensive study of Convergent and Commutative Replicated Data Types
  • provides adapters to 3rd-party stream processing frameworks for analyzing generated events

Documentation

Project

Community