My Photo

Become a Fan

DailyMile

Google Ad Skyscraper

« Instrumenting a Loader with BTrace | Main | Conversational state in IBM WebSphere eXtreme Scale: PER_CONTAINER grids »

June 10, 2009

Comments

Alex Popescu

Very educative post!

Couple of questions/comments:

1. I am not sure I understand why the search would be twice as fast when doubling the number of accounts and as a consequence doubling the number of machine. Being a parallel search, the speed will still be the speed of the lowest executing machine. I guess you'd be 'doubling' the speed only for the case you'd be distributing the same initial amount of data over a 2x number of machines.

2. Secondly, I'd say that depending on the type of the client the more parallel searches are needed the less performance you'll get (due to thread management). Indeed when network latency is involved this may be ignored.

3. When introducing the reversed index, I think you are introducing both a possible application bottleneck and a single-point of failure. The bottleneck would be aggravating depending on the write/read rate.

4. I think to achieve even better scalability you should look into using a consistent distributed hash map. That would basically remove both the above mentioned limitations.

(Disclaimer: I am not an WebSphere user and my above points are not directly related to WebSphere)

bnewport

Hi Alex,
1. A single core will be able to search X records/sec. Two cores should be double. So, the search rate is twice as fast with a grid double the size BUT the response time is still the slowest box in the grid as you point out.

3. The reverse index is itself a distributed hashed Map on user name so it isn't a SPOF. It's stored in the grid the same as the main map. Thus, it scales with the grid and is as fault tolerant as the main data map, both of which are hashed in the grid. WXS basically provides a form of consistent hashed distributed maps.

4. We already did :) It's 3 years old now.

Thanks

Colin Fleming

I agree, very interesting stuff, this is exactly the problem we've come up against recently. I'm glad to note we came up with the same solution! Is this an integrated feature in Websphere or do users tend to roll their own (i.e. using the same type of distributed map they would use to store their data)? I guess if it's integrated, you can guarantee atomic updates of the reverse index fields even though they're not in the same partition? Is there any locking overhead associated with this?

Looking forward to the blog post on structures in only a couple of partitions, too - I still haven't come up with a good solution for that!

Cheers,
Colin

The comments to this entry are closed.