Thanks for the response. Yes I'm dynamically creating actors with context.actorOf at every step of walking the tree. I'm wondering if that is better or if something like a single RoundRobinPool would be better, and how to decide between the two.
Also, could you point me in the direction of more information for "partitioning" the tree across multiple systems, and what's required to do that? I thought that with Akka this was just a configuration change, and you could route to actors on other boxes. On Friday, September 26, 2014 2:37:08 PM UTC+2, Björn Antonsson wrote: > > Hi Idris, > > On 25 September 2014 at 19:26:25, Idris Mokhtarzada ([email protected] > <javascript:>) wrote: > > Hi, > > I'm just starting to tinker with Akka, so forgive my ignorance. I'm > having trouble determining when I should be creating new actors every time > vs. re-using actors and maybe running them in round-robin pools or > something. Below is my use case.. any advice would be very helpful. > > This is a Spring MVC webapp, and I'm using Akka to traverse a tree which > is associated with some user data. These trees have 4 different node types > (including the root), so I have the following actor classes defined: > > - Root: 1 actor class for the "root" node.. this basically calls the > "Children" actor below > - Children: 1 actor class to process the children of internal nodes > - Leaf: 1 actor class to process the leaf nodes > > As I traverse the tree, each actor is generating some HTML and sending > back to the parent. At the Children nodes, these are concatenated together > and sent back to the parent. > The advantage I'd like to gain with Akka is I'd like to be able to scale > processing of the leaf nodes horizontally, to multiple threads, and > possibly multiple servers. > > Currently, at every node in the tree, I'm calling context.actorOf(...) to > get the child actors. My question is whether I should be doing that, or > whether it's better to call context.actorOf(...) only ONCE per actor TYPE, > and then setup a routing pool to scale. More generally, when do you want > to create new actors vs. re-use actors from a pool? Any help on this topic > would be greatly appreciated. > > > I'm not sure that I follow you when you say that you at ever node in the > tree call context.actorOf to get the children. Are you dynamically > constructing the actors in the the tree as you walk it, or do you mean that > create the actors that construct the HTML? > > In general, it's very cheap to create an actor to do some temporary work > (i.e. aggregating the HTML from sub nodes). The main actors remain > responsive, and since the children can send things directly to the > temporary aggregating actor, you don't need to keep track of multiple > simultaneous aggregations in a single actor. > > If your code uses multiple actors and fan out at tree node points, you > should already be using multiple threads. When it comes to scaling to > multiple servers, you need to start thinking about partitioning your tree > across multiple systems, and then the parent/child relationships might not > be a god fit. > > B/ > > Thanks! > Idris > -- > >>>>>>>>>> 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. > > > -- > Björn Antonsson > Typesafe <http://typesafe.com/> – Reactive Apps on the JVM > twitter: @bantonsson <http://twitter.com/#!/bantonsson> > > -- >>>>>>>>>> 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.
