Fleet System
Fleet is a middleware system implementing a
distributed repository for persistent Java object using novel quorum
replication techniques. Fleet is primarily target for supporting highly
critical applications: in particular the
objects it stores maintains correct semantics despite the arbitrary failure
(including hostile corruption) of a limited number of Fleet servers, and for
some objects, of clients allowed to
invoke methods on objects invocations.
Fleet is designed to be highly available, dynamically
extensible with new object types and
scalable to large numbers of servers and
clients. Some of its characteristics are:
·
Scalability: achieved via object replication
using Byzantine quorum systems. This results in better load balancing across
servers and lower access cost.
·
Concurrent Semantics: Fleet provides a generic protocol
for turning any regular Java object into a shared object with linearizable
concurrent semantics.
·
Extensibility: Fleet supports the dynamic
introduction of application-defined objects. Fleet is also transparent
from an application point of view and provide a mechanism to turn any object
into a Fleet Object.
·
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.
One Fleet application used to demo Fleet features at DARPA Exposition, was a prototype of a voting application.