From: Greg Lorriman Date: 2007-03-08T05:05:07+09:00 Subject: Re: Horizontal scaling - advice needed > > I am not sure whether I get your interaction correctly. What types of > things would have to be dealt with between users that are not done > through persistent state? By interaction I just mean recording user relationships, like when one user records another user as a friend on slashdot. They'll be a 'friend' table with two foriegn keys. In my naive idea of things each machine would be equivalent to the others. They would each have Webserver->Rails->Database. Interactions between users means recording a new relationship between two users, normally quite straightforward on a single database, but requiring inter-machine communication and a certain amount of fiddling about where the user accounts are on different machines/database-backends. Two-phase commmit comes to mind, but I intend to work around the lack of that. In other words I'm shifting the scalability problem to the network (routing, switches etc). I may also address the networking problem, in the distant future, by migrating accounts based on usage patterns so that user "interactions" will tend to be local to one machine. Obviously that is a strategy with some interesting problems to be solved, as you can probably immediately guess at, which I am looking forward to. > > Thanks for your words of wisdom, > > Just a quickie as I'm on my way out: your Drbing will certainly hurt > horizontal scalability - apart from the issue of finding instances etc. Do you think that my answer above addresses that? > It's probably also ok to assume some session stickiness as load > balancing routers can do that (for example based on IP) and this seems a > fairly common scenario. If not, you need some mechanism to make session > information available to all app servers (either via the backend store > or via some other mechanism). Definately. I have had this in mind. Perhaps ultimately I would end up with two (or more) domain (as in data) databases, one session database, one proxy-redirection database, and the proxy-redirector itself. And one day each running on their own machines. Right now I am imagining several vmware instances to allow for developement.