ABSTRACT

A major objective of distributed computing systems is to make data available to the geographically dispersed users in a fast, seamless fashion, while keeping the contents up-to-date [9]. Caching and replication are the two popular techniques to cater to these needs [49]. Both of these techniques play complementary roles, that is, caching attempts to store the most commonly accessed data objects as close to the users as possible, while replication distributes contents across the system. Their comparison, however, reveals some interesting analogies, for instance, cache replacement algorithms are examples of online, distributed, locally greedy algorithms for data allocation in replicated systems. Furthermore, caches do not have full server capabilities and thus can be viewed as 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

#2 ✐

scheme has its equivalent in replicated systems, but not vice versa [48]. Replication also leads to load balancing and increases client-server proximity [10].