[jdev] Re: [jadmin] Re: One million concurrent user

Jon Phillips jon at rejon.org
Sun Jan 30 23:19:32 CST 2005


Richard Dobson wrote:
>> 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
> jdev at jabber.org
> http://mail.jabber.org/mailman/listinfo/jdev
> 
> 


-- 
Jon Phillips

USA PH 510.499.0894
jon at rejon.org
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)	



More information about the JDev mailing list