The Fleet System

 

Fleet is a middleware system implementing a distributed repository for persistent objects resilient to malicious failures. It is built on top of quorum system techniques to enhance the performance of the systems, such as reduce the access cost per operation and the load balance of the systems, and improve the system scalability. Fleet is primarily target for supporting highly critical applications: in particular the objects it stores maintain the correct semantics despite the arbitrary failure (including hostile corruption) of a limited number of Fleet servers. It is designed to be highly available, dynamically extensible with new object types and highly scalable to large numbers of servers and clients. Below are sketched some of its features:

  • Fault tolerance: the correctness of the services provided and the semantics of  the object stored is guaranteed despite any benign failures and a limited number of Byzantine server failures.
  • Fault detection: Fleet continually monitors servers to detect when the number of  faulty servers is approaching that tolerable limit
  • High scalability: this is achieved by means of quorum system techniques.  This resulted also in a better load balancing across servers and lower access cost.
  • Concurrent semantics: Fleet provides a generic protocol for turning any object into a shared object with linearizable concurrent semantics, in addition to protocols for implementing safe and atomic varibles.
  • Extensibility: Fleet provide a mechanism to turn at run-time any application-defined object into Fleet objects, and which is completely transparent to the user.
  • Liveness: during periods of stability operations between clients and servers terminate with probability one.
  • Autonomy: each Fleet object is replicated at a set of Fleet servers designed by the application depending on the level of fault-tolerance desired by the creator of the object.
  • Isolation: to support possible overlapping universes of Fleet servers, each Fleet Object is created with a name space and that allows only the creator of the name space to place new object within it. 

    A prototype of a voting application using the Fleet package was implemented and demonstrated at DARPA Exposition in July 2001.

D.Malkhi, M.K.Reiter, D.Tulone, E.Ziskind. Persistent objects in the Fleet System In Proc. of the 2nd Darpa Information Survivability Conference and Exposition (DISCEX II), Vol. 2,  pp. 1126-1137, June 2001.