RBMHTechnology / eventuate

Global-scale event sourcing and event collaboration with causal consistency (This project is in maintenance mode. Only critical bugs will be fixed, but there is no more feature development.).
http://rbmhtechnology.github.io/eventuate/
Apache License 2.0
708 stars 99 forks source link

Switch to pure operation-based CRDTs #301

Open krasserm opened 8 years ago

krasserm commented 8 years ago

The approach is described in Making Operation-based CRDTs Operation-based. At the moment, the implementation follows the approach from A comprehensive study of Convergent and Commutative Replicated Data Types which requires access to local CRDT state during the prepare phase.

Eventuate already provides a reliable causal broadcast via replicated event logs and additionally exposes causality information (vector timestamps) during event delivery. In other words, it provides the Tagged Reliable Causal Broadcast (TRCB) API as described in the paper. What is still missing is the causal stability part of the TRCB API but this should be a minor effort to implement.

Freeing CRDTs from local state access during the prepare phase allows for much more efficient batching of operations messages (i.e. events) being written to the event log, which will significantly increase write throughput.