Hi everyone, I'm in the process of thinking through a rewrite of parts of an application using Akka Persistence. After watching Endre's talk from ScalaDays (I was unable to attend the talk itself and the streaming only made me sadder about that) I was thinking, is there a plan to apply this sort of thinking to PersistentActors?
I was thinking of a cluster where you have several instances of a PersistentActor, behind a Cluster-Aware Router (not using a Cluster Singleton because of scalability). The thing is (as far as I've been able to determine), each PersistentActor has its own state (and event store), so they don't have any sort of shared (eventually-consistent) view of the world. Since Akka Cluster already uses the Gossip protocol to maintain cluster state, perhaps it would be interesting to extend that so that Events get propagated too. For a little more perspective, here's what I am thinking of doing. Currently the application (running in a single server) holds state in in-memory Maps coordinated using STM. The elements in these maps are persisted to JSON files every time there's an update so that, when the system goes down and back up, it can restore them. I was thinking of changing this to use Akka Persistence. Currently a single process handles both the backend (in this case, communicating with e-bike rental stations) and frontend responsibilities (exposing the state via REST calls using Spray and allowing the web front-end to modify the state). They both access the store via a Repository object which takes care of querying and updating the Maps. I was thinking that, by using Akka to access the Repository (instead of method calls) I could then scale the system out by separating the frontend and backend into separate nodes. That, however, still leaves me with a Single Point of Failure: the Repository itself. If I could have the PersistentActors communicate amongst themselves to keep an eventually-consistent view of the world, it would allow me to replicate the Repository to several nodes, or perhaps not even having a dedicated process to hold the PersistentActors, instead hosting them in the same cluster nodes as the backend(s) and frontend(s). As I asked earlier, is this planned at some point, is there some other recommended way of going about this, or am I completely out of the ballpark? Thanks, -Mario. -- >>>>>>>>>> Read the docs: http://akka.io/docs/ >>>>>>>>>> Check the FAQ: >>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user --- You received this message because you are subscribed to the Google Groups "Akka User List" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/akka-user. For more options, visit https://groups.google.com/d/optout.
