These are chat archives for RBMHTechnology/eventuate
Global-scale event sourcing and event collaboration with causal consistency
That was fast!
In another subject, I have a couple of questions for you. When you compare Akka persistence with Eventuate you say that (1)
Event-sourced actors in #akka-persistence choose CP from CAP whereas those in Eventuate choose AP
As I see it, akka persistence isn't CP by its own. It needs Cluster Sharding, doesn't? Documentation says:
In this context sharding means that actors with an identifier, so called entities, can be automatically distributed across multiple nodes in the cluster. Each entity actor runs only at one place, and messages can be sent to the entity without requiring the sender to know the location of the destination actor.
And (2) you say:
Eventuate's EventsourcedActor can be operated as global singleton too, but can additionally be replicated, relaxing strong consistency to causal consistency.
How we could prevent the case where we end up with two instances with the same aggregateId running in different locations?
@Horusiath IMHO that's not what causal consistency means. Causal consistency means that the delivery of the events in each location honours the happen before relation between the events. But it stills let you deal with concurrent updates (those not captured by the causal relation between events). For dealing with concurrent updates in eventuate we could opt between:
However, I understand the AP nature of Eventuate, my doubt was about the possibility of use Eventuate as CP. I think we need akka cluster sharding like you say, but I get confused with the @krasserm phrase:
Eventuate's EventsourcedActor can be operated as global singleton too