Distributed Systems: Concepts and Design
To give the reader an appreciation of the importance of naming and the role of name services and resource discovery services in distributed systems. To understand the issues relevant to the design and implementation of a name service, including: the name space; the resolution mechanism; the division and replication of naming data between servers; and attribute caching.
To understand the key features of the DNS, GNS and X.500.
To gain insight into the engineering of a large-scale name service (DNS).
Names (e.g. URLs) are bound to objects (e.g. web pages). Names must be resolved before the corresponding objects can be invoked. The use of addresses as names is deprecated because it prevents the relocation of the named objects.
Specific services (e.g. filing) have their own naming schemes. But a name service provides a general naming scheme for entities (such as users and services) that are beyond the scope of a single service.
There are separate concerns to be addressed: designing the name space; meeting administrative requirements to partition the name space; and creating an implementation that scales.
Name resolution in the presence of cooperating name servers is called navigation and may be performed by the client or by the server.
The Domain Name System resolves names on a world-wide scale and represents a considerable engineering achievement. Students should be given a feel for the engineering problems and strong motivation for getting naming right.
Caching, data partitioning and replication are key to name service implementation.
Discovery services register and de-register services in a rapidly changing environment.
Students may be confused because a name service appears to be just a database service. Point out the ways in which a name service differs from a conventional database: the resolution/navigation mechanism, the physical scale of its use, and the slow-changing nature of the data.
Students sometimes find confusing the models of navigation outlined in Figures 9.2 and 9.3 and discussed in the DNS case study. They should be encouraged to think of reasons to use one method rather than another.
Review the way names (e.g. IP addresses and remote object references) arise in interprocess communication and remote method invocation. Encourage the students to think of examples of how naming is important in other areas of computer science, for example program compilation and linking.
It is advisable to cover at least DNS as a case study, since this will be familiar to most students. Encourage students to consider the steps taken in resolving particular DNS names.
Encourage use of nslookup to query local DNS servers, and querying of X.500 servers.
Refer to the examples of spontaneous networking in Section 1.2 and 2.2.3 to motivate the study of discovery services. Use Exercise 9.12-14 to enlarge on the details of the study of Jini.
The case study of GNS illustrates approaches to managing changes in the names of entities and in the naming structure, for example when one company is taken over by another.
The X.500 case study concerns a directory service that can satisfy queries in terms of descriptive attributes of the users and other resources registered.