Patrik -- great suggestions, thank you. On Tuesday, March 18, 2014 4:18:31 AM UTC-4, Patrik Nordwall wrote: > > Looks good. If Play 2 is unreachable you might introduce unwanted latency. > You can consider replicating to more than one, or start the insert > immediately and if that is quicker than then the ack from Play 2 you can > respond to client immediately. > > Regards, > Patrik > > > On Mon, Mar 17, 2014 at 6:32 PM, Raman Gupta <[email protected]<javascript:> > > wrote: > >> I am building a transactional system requiring low latency, but is highly >> available and fault tolerant. I can ack the transaction immediately, as >> soon as I can guarantee that it won't be lost due to a single-node >> failure. Initial thoughts around the main components are Play Framework to >> receive requests, Akka (of course), and MongoDB as a data store. >> >> To avoid the latency cost of writing to disk, I was considering sending >> the received message to a second server for temporary storage in an actor's >> memory state: >> >> Play 1 -> receive message from browser >> Play 1 -> forward message to "journal actor" on Play 2 >> Play 2 -> ack receipt to Play 1 >> Play 1 -> ack receipt to browser (now that the message is "safe" in >> memory on two servers) <-- user-perceived latency up to here >> Play 1 -> insert into MongoDB >> Play 1 -> upon confirmation of MongoDB insert, send "delete" to Play 2 >> Play 2 -> deletes message in memory >> >> If Play 1 fails to insert into MongoDB within the time that Play 2 >> expects the delete, Play 2 attempts an "upsert" into MongoDB (upsert >> handles the situation in which the initial insert did work, but no delete >> was received). >> >> Akka-persistence could even be used on Play 2 to write the data to disk >> asynchronously for greater consistency -- though not perfect -- in case of >> multi-node failure. >> >> Thoughts? Is there a better / simpler way to accomplish this? >> >> Regards, >> Raman >> >> -- >> >>>>>>>>>> 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] <javascript:>. >> To post to this group, send email to [email protected]<javascript:> >> . >> Visit this group at http://groups.google.com/group/akka-user. >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > > Patrik Nordwall > Typesafe <http://typesafe.com/> - Reactive apps on the JVM > Twitter: @patriknw > >
-- >>>>>>>>>> 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.
