Tobias Gerdin <tger...@gmail.com> writes: > As long as you have some way to redirect the client back to the same > application server things would scale quite well I think. You could > embed some token identifying the application server in the URL which > the reverse proxy could use to forward the request to the same > application server instance. New user sessions would still be > load-balanced using a round-robin scheme or something more > sophisticated. > > Something even cooler would be to have serializable continuations like > in Racket (but it requires limiting the language somewhat), in which > case you could store the continuations in the URL (if they are not too > big), or perhaps in some distributed hashtable that all application > server instances could access.
A whole bunch of ideas were discussed on IRC a while back[1], and serialisation was one of the issues I was most concerned about. As it stands, when the program stops you lose all your existing continuations, which may be undesirable. Another important issue was brought up by Antono, which is that continuation URLs effectively form a gc root, and you can't safely get rid of continuations without possibly breaking some url. And even though it you can just say "well, tough", you at least need some strategy for periodically pruning your set of continuations. I'd like to see you, or I, or someone, do something like this for guile, but I think the first step is to look at existing continuation based frameworks and see how they handle some of these issues. 1. http://rotty.yi.org/irclogs/freenode/%23guile/2012-01-10/ -- Ian Price "Programming is like pinball. The reward for doing it well is the opportunity to do it again" - from "The Wizardy Compiled"