next up previous contents
Next: The Relay Cache Up: Relay Previous: Relay

Client/Server Structure

At the broadest level, Relay is a client/server system. A client/server system provides us with a well-known location for group management and initial connection. Scalability can be achieved with a hierarchy of servers. The hierarchy can grow as the number of clients grows to keep the clients/server ratio to an efficient level. A parent server can be designated when the server is started. Parent and child servers treat each other as if they were client applications: a child propagates any update it receives to its parent, and vice versa. We must be careful to avoid sending updates in cycles between a server and its parent.

We chose to use a server hierarchy to avoid peer-to-peer group management, but both structures have desirable properties. While client/server with a server hierarchy simplifies design, it becomes crippled when the system of servers is partitioned. Peer-to-peer structures with randomized anti-entropy exchanges are more robust on unreliable networks, but require group management. A combination of client/server and peer-to-peer might exploit the advantages of both structures. Clients could connect to well-known servers while the servers achieve scalability through a peer-to-peer topology using TSAE to propagate updates. The server topology is independent of how client applications operate. Client applications connect to a server, but they are unaware of how their updates are propagated throughout the system.

We make the following simplifying assumptions with respect to how the Relay server and client-side caches work:


next up previous contents
Next: The Relay Cache Up: Relay Previous: Relay

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