From: Justin Voskuhl (jvoskuhl_at_hotmail.com)
Date: Wed Feb 25 2004 - 17:48:39 PST
In this paper the authors describe a framework they've designed that
supports a wide range of very high scale internet services. Their framework
supports very low cost PC hardware deployed in a cluster configuration.
They note that many applications can tolerate weaker-than-ACID semantics
(which they call BASE semantics, har har) and that for such applications you
can get great performance benefits from the weaker semantics. For example,
applications that compute values that don't have to be instantaneously right
might use a cached value until the exact current value is delivered.
Applications they note are not suitable for BASE semantics include online
profile applications and other applications where the user expects her
preference and profile information to be committed and other parts of the
application should not continue to use old cached values.
At Microsoft I work on very large scale consumer internet services and one
design point I noted they make heavy use of is UDP multicast. In our
systems we've found that this works fine up to a point, but if the number of
machines you have grows into the thousands in some cases it creates problems
because the network can become flooded with these multicast status update
messages. It's definitely something to use in a measured way with an eye to
your service growing very large (where large these days is in the tens of
thousands of servers, the norm for the larger services is thousands of
servers.)
The load balancing scheme they describe seems very odd - why you would use
JavaScript baked into your client scripts instead of a hardware load
balancer for a set of web front ends would be considered an odd choice for a
deployment today. It may be that the prices of the load balancers have come
down so much that it's now considered a no-brainer to choose these system to
handle the front end load balancing.
I like their discussion of the "spikiness" of real-world loads. The ability
to pull additional machines into service is a great idea, but in practice in
the data center I forsee it being a difficult thing to pull off. There
generally aren't spare machines laying around idle that can be pulled into
service to handle a spike. You do need to system to have good behavior when
loads gets high - reducing the level of service or degrading in a reasonable
way (500 - Server unavailable is not a good choice.)
_________________________________________________________________
Watch high-quality video with fast playback at MSN Video. Free!
http://click.atdmt.com/AVE/go/onm00200365ave/direct/01/
This archive was generated by hypermail 2.1.6 : Wed Feb 25 2004 - 17:48:45 PST