next up previous contents
Next: Weakly Ordered Eventual Consistency Up: Relay Previous: Client/Server Structure

The Relay Cache

As the title of this thesis states, Relay is designed to be a simple shared data space. Since most of the system-level functionality of a shared data space is centered in the cache, a simple shared data space means simple cache management.

An important design compromise was to keep full replicas of shared state at each client. Replicas eliminate the caching issues of size, prefetch policy, and replacement policy. The size of a replica is dynamic, increasing and decreasing with the total size of shared state. Consequently, there is no need for a replacement policy since the replica is always large enough to hold all data. A prefetch policy is also unnecessary because the entire state of the data space is present in the replica.

This design decision forces the server to send all updates to all clients. Any update to shared state must be sent to all clients so all replicas are kept consistent. If a cache held a subset of the application data, the server could limit communication to updates of the data cached on the client. However, that may require the server to maintain directories (copy sets) of client caches to know what clients are caching, and we prefer a stateless server to simplify crash recovery.

Eliminating all other cache concerns, we can focus our work on the design and implementation of a consistency protocol.



Carmine F. Greco
Wed Mar 26 23:44:38 EST 1997