Were I designing it, I'd have a login server, which validates you and then hands you a new place to connect to, for your actual sustained connection. All data is shared between the servers (or rather, replicated between them; SQL is your friiiiiend), and you just get handed off to whatever actual messaging server has the least load at the time you connect.
Yup although for a truely scalable solution you wouldnt want to rely on a single sql server, you would want the servers to replicate the routing data themselves and store that data in memory for maximum speed and to help keep the load of your sql servers.
So you are saying have a server that routes individual IM connections to other jabber servers and store the route info in the sql db. Then, how to make the sql servers redundant? I don't have tons of experience in this area, but am willing to work towards it and/or provide code to solve scalability issues if we can lead towards some needed improvements.
In theory, this would allow for a lot of scalability; getting loaded down, just add another server into the cluster and voila, it automatically starts sharing the load.
Yup exactly.
Of course, that's harder to do under XMPP since I don't believe we have any proposed extensions to validate login via one server and connect on another, much less split incoming messages out across different actual servers in a cluster.
There isnt a token style login mechanism that you describe but connections can be redirected to another server, i.e. redirect connections to a server under lower load. Also there is nothing in the protocol that causes problems with splitting incoming messages out over multiple servers in a cluster, and it doesnt need any specific protocol to be developed for it to work, its simply a server design and architecture issue.
That is one of the options I am considering is to have a main jabber login server that then keeps track of the load of the other jabber servers and then routes connections to the other jabber servers and records which current jabber server a user is on in mysql.
Thus, could have jabber01.blah.com, jabber02.blah.com and just record that in the mysql db as the current server route...but wait, that would mess up the rosters...ugh...still thinking about solutions.
As I said before, this company I'm doing this work for is in support of me adding code to open source solutions to contribute back to the community, so I hope that that can be the best solution.
Jon
_______________________________________________ jdev mailing list [email protected] http://mail.jabber.org/mailman/listinfo/jdev
-- Jon Phillips
USA PH 510.499.0894 [EMAIL PROTECTED] http://www.rejon.org
Inkscape (http://inkscape.org) Open Clip Art Library (www.openclipart.org) CVS Book (http://cvsbook.ucsd.edu) Scale Journal (http://scale.ucsd.edu) _______________________________________________ jdev mailing list [email protected] http://mail.jabber.org/mailman/listinfo/jdev
