I'm helping develop an order quote service for a customer in financial markets using WebSphere Extreme Scale (ObjectGrid). The application simply pulls the current quote for a particular stock from a feed and maintains the current price and the 20 minute history in memory for each stock. The price updates arrive at 200k/sec(!!) so it's quite a pace. There is a lot of data as there is 230k stocks to keep the quotes with history for. Clients can request the current live price for a stock or the 20 minute delayed price for a stock if they haven't paid for the live service.
The application is currently running on a pair of older dual socket quad core Intel servers connected with Gb ethernet. Thats 8 cores each or 16 cores in total. The two boxes are currently handling this service at 350k/sec price updates in total, 175K per server. All updates are asynchronously replicated for high availability. Scaling up is a matter of running the application on more hardware. 4 such boxes would deliver 700k/sec, 8 such boxes 1.4m/sec and so on. With no replication then I'm getting well over a million per box but no surprise there, if you do nothing then it goes real fast :)
Anyway, just thought I'd share. If anyone wants the application we provided as a sample then please email me.
I'd love to see a more detailed case study, Billy.
Posted by: ocean | October 01, 2008 at 05:13 AM
Impressive.
Posted by: Paul Anderson | October 01, 2008 at 01:01 PM
Hi,
"Clients can request the current live price for a stock or the 20 minute delayed price for a stock if they haven't paid for the live service."
How are the clients connected (how exactly to they consume this data) to this service? Web, AJAX ?
Is the same data flow (or somehow filtered) transmitted to the clients?
Second, are all those messages persisted somewhere?
Regards,
Horia
Posted by: Horia Muntean | October 01, 2008 at 01:35 PM
The clients connect with the ObjectGrid client API to retrieve the current price or the twenty minute old price. The client fetch rate is nothing like the price rate in this particular scenario. Non Java clients can pretty easily use some kind of gateway to do the same thing. The clients pull the information when they need it, it isn't retransmitted live (wouldn't serve much purpose doing that given the feeds available one way or the other).
Thanks
Posted by: Billy | October 01, 2008 at 01:42 PM
Hi Billy,
I'd like to have a look at this sample app. Currently I am working on a messaging application which has a smaller tps requirement but still it is a little cpu intensive and due to this application I am researching a lot about clustering, caching and related subjects.
regards,
Rafael
P.S: I'd also like to point that the link "The other Billy from IBM" at your about page is wrongly pointing to http://www.devwebsphere.com/www.websphere-world.com instead of http://www.websphere-world.com
Posted by: Rafael Ribeiro | October 12, 2008 at 04:56 PM
Billy,
Your post same up as I was googling for just this sort of thing. Would love it if you would share the sample app with me. I've been looking into other caching products like Coherence, Gigaspaces and JBoss Cache -- so would love to see how this compares.
Best,
Rishi
Posted by: Rishi | November 25, 2008 at 03:44 PM