[jdev] scaling a component
simon at buddycloud.com
Mon Dec 15 13:50:39 CST 2008
I was reading the http://xmpp.org/registrar/disco-categories.html and
the http://xmpp.org/extensions/xep-0030.html XEPs and have some questions.
Here at Buddycloud Towers we are running into some component scalability
problems that are hitting us sooner than we thought and I need move from
a single component handling messages to multiple components handling the
same message type.
Our main location lookup component handling the XEP-0255 stanzas is
starting to be IO-bound and we need to break it out into multiple
components handling the location queries.
What's current best practise for having multiple components that offer
the same service?
Here's a couple of options that I could think of (the component in
question is called butler.buddycloud.com):
* Have the client do a disco query at startup and then choose a
component based on a regex and a bit of randomness for load balancing:
search for butler*.buddycloud.com would return all the butlers and the
client would then connect to butler33.buddycloud.com.
* Have the client do a disco query at startup and then choose a random
leaf from a branch: household-staff.buddycloud.com
* have all the butlers go through a proxy butler that is registered on
the sever which then load-balances between different dedicated butlers.
Any tips or pointers would be most useful. (I'll push the queries about
load balancing components between servers to the ejabberd mailing list.)
uk: +44 20 7043 6756 de: +49 89 420 955 854
uk: +44 78 5335 6047 de: +49 17 8545 0880
email and xmpp: simon at buddycloud.com
More information about the JDev