Information Technology Reference
In-Depth Information
An example of this was discussed in Section 4.1 , where we had a single machine that
was used for a web server, a database, and an application server (dynamic content gener-
ation). The three functions all compete for resources such as disk buffer cache, CPU, and
the bandwidth to the disk, memory, and memory subsystems. By moving the three major
functions to separate machines, each is able to perform better because it has dedicated re-
sources.
Separating the functions requires making them less tightly coupled to each other. When
they are loosely coupled, it becomes easier to scale each one independently. For example,
we could apply x -axis scaling techniques to a single subsystem. Scaling individual parts
has advantages. It is less complicated to replicate a small part rather than an entire system.
It is also often less expensive to replicate one part that needs more capacity than the entire
system, much of which may be performing adequately at the current scale.
Inadditiontosplittingalongsubsystemboundaries, y -axisscalingmayinvolvesplitting
workflows or transaction types.
Perhaps some category of transactions might be better handled as a special case rather
than being treated the same way as all the other requests. This type of transaction might be
split off to be processed by a dedicated pool of machines.
For example, it is expensive to engineer a system that has very low latency for all re-
quests.Ifalltrafficisplacedinthesamebucket,youneedfarmorehardwaretokeeplaten-
cies low for the few requests that care. A better alternative might be to separate requests
that come from batch processing systems versus interactive services. The latter can be pro-
cessed by machines that are less oversubscribed or are on networks with different quality
of service (QoS) settings.
One can also mark special customers for special treatment. One financial services web
site sets a cookie if a user invests multiple millions of dollars with the firm. The web load
balancer detects the cookie and sends its traffic to a pool of servers that are dedicated to
very important customers.
Alternatively, there may be an infrequent type of transaction that is particularly burden-
some, such that moving it to its own pool would prevent it from overloading the general
transactions. For example, a particular query might negatively affect the cache infrastruc-
ture.Suchqueriesmightbedirectedtoaseparatesetofmachinesthatusesadifferentcache
algorithm.
Techniques that involve y -axis scaling include the following:
• Splitting by function, with each function on its own machine
• Splitting by function, with each function on its own pool of machines
• Splitting by transaction type
Search WWH ::




Custom Search