A Twitter Savior?
Twitter is well known and much maligned for its constant outages and general instability. Even third party tools like twhirl have begun posting apologies for Twitter. Everyone has their own idea of what’s wrong and how to fix it. However Dave Rosenberg mentioned a new one, XMPP plus RabbitMQ.
I’ll be the first to admit I don’t know much about the RabbitMQ module except that it was originally designed as a jabber gateway module. I used it at a recent client, around 60,000 users and had their hands in a lot of markets. It didn’t scale all that well for a fraction of those 60,000. It could have been implementation but there’s not *that* much tuning to be done. I have trouble seeing how it would scale for the thousands of very active users on Twitter. I’m not trying to overcomplicate things, but I think the problem is bigger than a bunny.
Alex, what was the problem? Please let us know if it was Rabbit related. In our tests a RabbitMQ node can handle about 4,000 concurrent TCP connnections, and by clustering RabbitMQ you can handle many more. If you connect via a connectionless protocol such as HTTP, RabbitMQ can handle much larger numbers of concurrent users. In tests each node can handle hundreds of thousands of queues. If you would like help achieving these numbers stably, please tell me.
alexis
Comment by alexis — July 3, 2008 @ 1:56 pm
Hi Alexis,
I have a feeling it was too few clusters/systems for an environment of ~15,000-20,000 concurrent users. It was a tangent to a different project I was working on. I can’t mention their name but I know they currently only use it in a limited fashion and have implemented a more standard corporate IM solution instead of the somewhat custom jabber/Rabbit solution.
Do you have any thoughts on how the Rabbit project might affect/assist Twitter? I know they could use the help and are looking.
Comment by Alex Lewis — July 3, 2008 @ 2:12 pm
Alex, thanks.
We’d be happy to help - I think we have a good understanding of how to scale messaging systems.
So if I understood correctly they were having problems with jabber and not Rabbit. By combining RabbitMQ with an XMPP gateway, we are able to provide scalable pub/sub (in twitter terms ‘following friends posts’) with an IM front end. This means twitter can offload work onto a set of RabbitMQ nodes. Potentially this could be done in a ‘decentralised’ way, though that would require federated roster. I’d be happy to chat more if you contact me. Cheers, alexis
Comment by alexis — July 4, 2008 @ 1:09 am