Carmine F. Greco
t
Distributed collaborative applications (DCAs) can benefit from a system facility that satisfies three common needs: (1) distributed shared state, (2) client-side updates, and (3) data consistency. A shared data space provides for these needs through the use of distributed caches. Different caching policies and behaviors can be implemented for a shared data space, depending on the types of applications it will support.
We describe a simple client/server shared data space called Relay that maintains consistency of client caches for DCAs written in the Java language. Relay uses a weak consistency model that guarantees that client caches will eventually converge, even when updates may be delayed or delivered and applied out of order. Updates are timestamped at the accepting server; each received update supersedes all earlier updates to the same object.
Relay's weakly ordered eventual consistency model is simple, scalable, and adequate for Web-based DCAs in which all shared state is graphical. Our premise is that for graphical DCAs, transient inconsistencies caused by out-of-order delivery of updates are acceptable. We have implemented a sample shared whiteboard application called Multiart to illustrate use of the Relay system.
First of all, I thank God for the strength and determination to see this thesis through to completion. Secondly, I thank Jeff Chase for all his guidance, patience, and understanding. I thank my family and friends for their support and encouragement during the tough times. A special thanks to Gennaro Cuomo, Michael Fraenkel, and others from IBM Corp. for their patience and financial support.
In addition, I would also like to thank Jeff Chase, Michael Fraenkel, Sean Beary, and Jennifer Higgins for proof reading and making suggestions for this paper.