Sensei is a project focused on fault tolerance through active
replication of components: applications that are instantiated simultaneously over several hosts, to
offer high availability.
Its domain is CORBA and JavaRMI applications that have strict fault tolerance requirements.
This project is the basis of my PhD, whose title is
"Techniques for the Development of Distributed, Fault-Tolerant Applications using CORBA and JavaRMI Architectures",
defended on July 2002. My name is LuisM Pena,
(firstname.lastname@example.org, personal homepage:
http://grasia.fdi.ucm.es/~luismi), and my PhD tutor
has been Juan Pavón,
whose homepage is http://grasia.fdi.ucm.es/jpavon
Sensei is OpenSource, the code completely free, without any license
restrictions. On the other side, there is no warranty or responsibilities associated.
Sensei defines the following three subsystems, having already implemented the first two of them:
SenseiGMS: this subsystem provides the functionality to make reliable group communications,
that is, all or none of the members in the group receive the messages. In addition, the subsystem
uses total order algorithms to guarantee that every member in the group receives the same set of
messages in exactly the same order. These features are the basics of the Virtual Synchrony Model:
if the members of the group are replicas of the same object and they share the same initial state,
as they process the same sequence of messages, they will share the same final state, keeping
therefore the consistency (this is a very brief explanation, further details can be found on the
This layer provides very basic functionality, with a similar interface to other reliable group
communication systems, like JavaGroups, Ensemble or Transis, with the purpose
to be easily replaced by those systems.
SenseiDomains: this layer is built on top of SenseiGMS,
providing tools and a framework to simplify the development of replicated applications. Its main
feature is the definition of components as the replication unit, facilitating the use of those
replicated components in the application. The components are shared by the application replicas,
requesting therefore support for concurrent access and transactions, both provided by the framework.
Using the replicated components, and the given support, it is possible to design replicated applications
as if they were just multithread.
SenseiUMA: defines and implements replicated components.
The components under study are containers and, in fact, the design is based on the java.util package
found in Java2. The purpose of this subsystem is to leverage the replicated application of designing
its own components. Therefore, its deployment is much faster.
SenseiGMS and SenseiDomains are implemented in Java, offering the same interface to CORBA and JavaRMI
applications. SenseiUMA takes advantage of the classes already implemented in Java2, but this is only
possible for JavaRMI; that is, the definition of SenseiUMA is, for CORBA applications, more complex than
for JavaRMI applications. This layer is still under development.
Together with these three subsystems, there is an additional one covering the directory services.
This last subsystem is called SenseiGMNS (GMNS = group membership naming service), and it's itself a
replicated application, developed on top of SenseiDomains and making use of its components strategy:
it is, therefore, a proof of concept of the developed methodology.
Following is a picture showing the subsystems and their interactions; SenseiUMA provides components
to the applications and it is not shown here.
This site provides the following information:
- Overview: this page
- Design: General issues concerning the design of the overall system.
- SenseiGMS: design and implementation of the reliable group communication layer.
- SenseiDomains: Methodology used, and design and implementation of this layer, which features the
- SenseiGMNS: description and usage of the directory services.
- SenseiUMA: information on the replicated containers already implemented in Sensei.
- Code: here is the whole code of the project, ready to be surfed with syntax highlighting.
- IDL specification: high level description of the system, using the CORBA IDL language.
- Download and build: Sensei is OpenSource, and it is distributed in source and binary (jar) files.
This page gives as well information on how to build the binaries from the source distribution.
- Configuration: how to configure Sensei (all the subsystems).
- Examples: brief explanation of the examples supplied with the distribution.
- Documentation: the given documentation is mainly associated to the symposiums where the Sensei
theory has been exposed, not to manual guides (so far, the only guides are the examples and the
clear IDL specification).
- Links: to other related systems. It includes as well the project's bibliography