|
|
Fiscal 1994 Project Portfolio Report
Jim Waldo, Principal Investigator
jim.waldo@East.Sun.COM
Overall Objective
To explore, discover, and document techniques of programming which allow the
construction of robust, reliable distributed programs that run in a large-scale
network of heterogeneous machines. Vantage forms the middleware layer of the
overall distributed computing program, exploring the basic interfaces that can
be used by all programmers of distributed applications.
Objective for FY94
To define the scope of the project, determine the minimal requirements on all
objects for the base system, and to develop interfaces and sample
implementations for a distributed, object-based transaction system and a simple
event registration/notification system.
Description
The project concentrated on the production of a set of interfaces (and sample
implementations of those interfaces) that aid programmers in the
construction of reliable, robust distributed applications. These interfaces are
meant to aid in the construction of software that will run on large scale,
enterprise-size networks of hundreds and thousands of machines.
The first interface is meant to define the fundamental, base interface for all of the objects within the Vantage universe. The goal was to include in this interface as little as possible, since every operation included in this interface will need to be supported by all objects in the system.
A second set of interfaces was developed to allow wrapping a set of
object method invocations in a transaction, allowing traditional transaction
guarantees that either all of the operations would take place or none of them
would take place.
A third set of interfaces was developed to allow objects to register interest
in and receive notifications of the occurrence of events in other objects. This functionality attempts to give some of the power of callback functions in a distributed, object-oriented world without requiring the compromise of any of the basic design principles of such a system.
Using these interfaces, the Vantage team investigated the use of
various ways of using local objects to aid in both the reliability and robustness of a distributed system. The project looked at:
- Replicated objects, in which the object being used would exist in multiple
locations
- Surrogate objects, in which a local object would be able to provide some of
the services of the original object when the original is unavailable, but not
others
- Caches, in which a local object will reflect the state of the genuine object as of the time of the latest update
- Copies, which are snapshots of the object at a particular point in time (the time that the copy was made) but which do not reflect subsequent changes
in the object
Accomplishments
The team succeeded in developing an interface for the base Vantage object and a set of interfaces to support transactions, event interest registration, and event notification.
The base object interface, which must be supported by all objects within the
system, includes a single operation. This operation returns a pure name that can be used only for comparison with other pure names for object identity and for hashing.
The interfaces that allow transactional semantics to be wrapped around a group
of object method invocations is also surprisingly simple. A number of the issues that make traditional transaction interfaces difficult disappear in an object
system where the participants in the transaction must take responsibility for the stability of their own persistent state. The interfaces allow those objects that are only accessed read-only to have a single-phase commit protocol; other objects have a two-phase commit. This set of interfaces has already been transferred to SunSoft.
A set of interfaces that allow the identification of events that occur within an object, registration of interest in such events by another object, and the
notification of the occurrence of those events has also been defined, along with a simple implementation of those interfaces. The interfaces allow the creation of a series of third-party filters on such event notifications, allowing a number of different delivery policies to be implemented in a way that is transparent from either the generator of events or consumer of notifications.
The group also began to investigate the concept of a lease as a unifying notion in
distributed systems. A lease can be thought of as a time-out with semantics. In
addition to specifying some period of time that is known to the holder of the
lease and the object granting the lease, the lease also specifies the consequences of the holder of the lease failing to renew it before the time period expires.
In addition, the Vantage group produced and made publicly available Xvan. Xvan is an enhanced X Window System server that allows multiple physical screens to be treated as a single logical device. This allows windows to be moved from screen to screen, appear on multiple screens, and be larger than a single screen. The software, developed by Peter Jones as a summer intern project, was placed on the X Consortium ftp server, where it is freely available.
References
Publications
"A Note on Distributed Computing," J. Waldo, G. Wyant, A. Wollrath, S.
Kendall, SMLI TR-94-29.
"Sharing Between Translation Units in C++ Program Databases," S. Kendall, G.
Allin, to appear in Proceedings of the 6th USENIX C++ Technical Conference,
SMLI 94-0064.
"Distributed Object Programming in C++ and Modula-3," A. Wollrath, SMLI
94-0142.
"Xvan: A True Multiple Screen X Server," P. C. Jones, SMLI 94-0002.
|