Hi,
I am looking to deploy pub sub for a website build to display live sports
scorecard to the users.
At peak traffic, there are about 200K concurrent users. Since the load is
probably too much, I am doubting if pub sub can really be a good solution here.
Here is an overview of how I am looking to deploy pub sub:
1. User visits http://localhost/match-id-23000
2. As soon as user loads the match page, he is subscribed to the match
specific node
3. There can be 1 or more (<5) publishers, who actually are vendors
sitting in remote locations
4. Vendors publish the live scorecard as and when data is available
with them
5. Subscribed users gets the live scorecard update in almost
real-timeHere is the technical flow of the same:
1. On page load, an ajax is fired subscribing the user for match node
2. Target url for all ajax requests in a PHP connection manager (say
bosh.class.php)
3. PHP connection manager parse incoming request params, generated
appropriate xml's as specified in various XEP's and communicate with the jabber
server
4. PHP conn. manager communicate by curling the jabber server
5. Jabber server respond back whenever there is new data available for
the subscribers
Now the scalability doubts which comes to my mind are:
1. With PHP connection manager holding every single incoming request
(timeout 60 sec) and waiting for a response from the jabber server, I assume
under 200K concurrent users the web server will soon stop accepting the
incoming ajax requests.
2. Also are ejabberd, openfire and the likes capable of handling such a
load.
3. If yes, how much is the estimated throughput of these jabber server.
(need to access amount of infrastructure required)
4. Overall I think PHP connection manager will be the main bottleneck
here. So will it be advisable to proxy all incoming ajax requests directly to
the jabber server and put the login between the vendor and the jabber server.
Thanks in advance for your helpful advise and insight.
Abhinav Singh,
Bangalore,
India
http://abhinavsingh.com