An overview of data replication on the Internet <s> Introduction <s> The Information Technology Center (ITC), a collaborative effort between IBM and Carnegie-Mellon University, is in the process of creating Andrew, a prototype computing and communication system for universities. This article traces the origins of Andrew, discusses its goals and strategies, and gives an overview of the current status of its implementation and usage. <s> BIB001 </s> An overview of data replication on the Internet <s> Introduction <s> Individual machines are no longer sufficient to handle the offered load to many Internet sites. To use multiple machines for scalable performance, load balancing, fault transparency, and backward compatibility with URL naming must be addressed. A number of approaches have been developed to provide transparent access to multi-server Internet services including HTTP redirect, DNS aliasing, Magic Routers, and Active Networks. Recently however, portable Java code and lightly loaded client machines allow the migration of certain service functionality onto the client. In this paper, we argue that in many instances, a client-side approach to providing transparent access to Internet services provides increased flexibility and performance over the existing solutions. We describe the design and implementation of Smart Clients and show how our system can be used to provide transparent access to scalable and/or highly available network services, including prototypes for: telnet, FTP, and an Internet chat application. <s> BIB002 </s> An overview of data replication on the Internet <s> Introduction <s> After a brief discussion of what the World Wide Web is the authors go on to discuss: client server architecture, hypertext transfer protocol and setting up a Web server. <s> BIB003
The World-Wide Web BIB003 has been established as the de facto source of information for common users, and is now responsible for the majority of Internet traffic. Ecommerce, e-banking and www publishing are areas that generate an ever increasing interest for web applications. The boost in the popularity of the web resulted in large bandwidth demands and notoriously high latencies experienced by end-users. To combat these problems the benefits of caching and replication were early recognized by the research community. Caching  was traditionally applied to distributed file systems such as the AFS BIB001 and although it is a well studied issue, its application on the Internet gave rise to new problems, e.g., where to place a cache, how to make sure cached contents are valid, how to handle dynamic pages etc. Replication was commonly used in distributed systems to increase availability and fault tolerance. Both techniques have complimentary roles in the web environment. Caching attempts to store the most commonly accessed objects as close to the clients as possible, while replication distributes a site's contents across multiple mirror servers. Caching targets directly at minimizing the download delays, by assuming that retrieving the required object from the cache, incurs less latency compared to getting it from the web server. Replication, on the other hand, accounts for improved endto-end responsiveness by allowing clients to perform downloads from their closest mirror server (either in geographic terms or network-wise), while at the same time balancing the load among the various web servers. From a terminology point of view, caching and replication are sometimes used interchangeably in the literature. Arguably, caching can be viewed as a special case of replication when mirror servers store only parts of a site's contents. This analogy leads to some interesting comparisons. For instance, cache replacement algorithms are examples of on-line, distributed, locally greedy algorithms for data allocation in replicated systems  . Furthermore, the fact that caches do not have full server capabilities can be viewed as the case of a redirection policy for a replicated system, that sends requests for specific object types (e.g., dynamic pages) to a single server. Essentially, every major aspect of a caching scheme has its equivalent in replicated systems, but not a vice versa. Until now, researchers concentrated their efforts primarily on caching issues and the potential of replication was not fully exploited. Therefore it comes as no surprise that the current state of the art involves manual decisions concerning where to create a mirror site and copying the whole site's contents (coarse grain replication) even if some objects are rarely accessed. Moreover, requiring the clients to explicitly define the server from where to download, is still the order of the day for many sites. In this survey we attempt to: 1) provide an overview of the key issues when applying replication on the web, 2) summarize and categorize research done in the area and 3) identify open problems and directions for future work. A survey on web caching can be found in BIB002 . A number of bibliographies and reading materials for web caching are also available on line, e.g.,  . Concerning replication and its challenges,  provides an early overview. The rest of the paper is organized as follows. Section 2 focuses on major research issues in replication. Section 3 discusses redirection. Section 4 discusses server selection and Section 5 describes issues in replica placement. We illustrate some open research problems in Section 6. Finally, Section 7 presents some concluding remarks. replication is to make all these servers appear to the user as a single highly capable web server. Replication began by manually mirroring web sites. The current target is to dynamically create, migrate and delete replicas among web hosts in response to changes in the access patterns. The demand for dynamic replication comes from the continuous increase in the large scale web hosting market [50] , where it is evident that manual manipulation of a huge number of replicas is not feasible. There are three main issues in implementing a replicated service on the Internet. The first is to assign requests to servers according to some performance criterion in a transparent to the end user way. This in turn gives rise to two new problems namely, who should decide about the request redirection (location) and where should a request be directed (server selection). The second challenge is to decide on the number and placement of replicas across the distributed servers. Last but not least, is the problem of maintaining consistency in the face of updates. In this survey, we leave aside consistency issues and focus on the rest.