These are chat archives for RBMHTechnology/eventuate
Global-scale event sourcing and event collaboration with causal consistency
Hello everyone, I want to ask you what will be a good usage of Kafka as storage backend for Eventuate? Someone has a use case already?
I was interested in Kafka because it can work as an Event Bus, allowing me to persist an event and publish it to the event bus in an atomic operation. So Kafka would be acting as the storage backend for my eventuate-based microservices and the mechanism to communicate the different microservices as well.
However, I kept reading eventuate documentation until I finally realize that Eventuate is Akka on steroids: it not only allows AP, it also gives you the event bus with a lot of features.
These actors can be considered as event-driven and event-sourced microservices, collaborating on a causally ordered event stream in a reliable and partition-tolerant way. Furthermore, when partitioned, they remain available for local writes and automatically catch up with their collaborators when the partition heals.
The only constraint is that all our microservices must be eventuate-based (*), so I think that if we want to communicate a bunch of polyglot microservices, it might be a good use case for Kafka as storage backend.
In other words, what semantics or features gives us Kafka as storage backend different to what already gives us Cassandra, e.g fault-tolerance and high availability?
I've already read How can Apache Kafka be integrated with Eventuate? but it doesn't give me a good reason to use it over Cassandra.
(*) With this I mean that we need use scala or java with the eventuate library in all of our microservices and at least one EventsourcedProcessor who invoke the corresponding API method of the microservice.