The success of the Web has proven the value of sharing different types
of data in an autonomous manner. The number of Web users, servers, and
total Internet traffic have been growing exponentially in the past
5 years [1]. The scale of Web usage is stressing the capacity
of the Internet infrastructure and leads to poor performance and low
reliability of Web service. Multisecond response
times for downloading a 1KB resource are not unusual
[35]. Furthermore, recent studies [29] indicate that
server mean time to failure (MTTF) is 15 days, thus a client
accessing 10 servers may experience a failure every 36.4 hours. Such
a failure rate is not acceptable for many important Web applications such
as electronic commerce and
online stock trading. Recently, several techniques have been adopted to
reduce Web response time, improve its reliability, and balance load among
Web servers. Among the most popular approaches are:
- Proxy server caching. Proxy servers intercept client requests
and cache frequently referenced data. Requests are intercepted either at an
application protocol level (non-transparent caches) [20,30] or
a network protocol level (transparent caches) [13].
Caching improves the response time of subsequent requests that can be
satisfied directly from the proxy cache.
- Server clusters
- A single dispatcher intercepts all Web requests
and redirects them to one of the servers in the cluster. The requests are
intercepted at the network protocol level [12,16]. Since a server
cluster typically is located within a single LAN, the server selection is
mostly based on server load and availability within the cluster.
- DNS aliasing
- A single host name is associated with
multiple IP addresses. A modified DNS server selects one of the IP
addresses based either on round-robin scheduling [26], routing
distance, or TCP/IP probe response time [14].
Each of the proposed solutions, however, improves request
response time, reliability, or load balancing among servers, but
does not address all these issues together. Furthermore, many of the
proposed solutions often introduce additional problems. Proxy server
caching improves request response time, but it introduces potential
data inconsistency between the cached data and the same data stored at
the server. Non-transparent proxy caches create a single point of
failure. Server clusters improve reliability at the server end, but
do not address the reliability of the network path between the cluster
dispatcher and a client. Server clusters are not suitable for
balancing a load among geographically replicated Web servers because all
requests must pass through a single dispatcher. Consequently, server
clusters only improve the load balance among the back end Web
servers. Finally, although DNS aliasing improves both request response
time and service reliability, it forces data providers to replicate
the entire Web site. This is impractical for two reasons:
(1) since most Web servers exhibit skewed access pattern [32],
replicating the entire Web server could be an overkill;
(2) in some cases it is not possible or desirable to replicate all
dynamic services.
In addition, the DNS aliasing implementation becomes problematic when client-side DNS
agents cache results of DNS queries or submit recursive DNS queries.