Sensei


Overview

Design

Sensei GMS

Sensei Domains

Sensei GMNS

Sensei UMA

Code

IDL specification

Download & Build

Configuration

Examples

Documentation

Links


Last Updated:
30th May 2004



My personal homepage java_lmp@yahoo.co.uk
Sensei Domains

SenseiDomains is a subsystem built on top of SenseiGMS, providing a methodology to simplify to a very high degree the development of replicated applications.

Its main feature is the support of replicated components:

  • Supports static or dynamic components, being dynamics those created at runtime, providing SenseiDomains the logic to automatically instanciate the component on the replicated instances.
  • Concurrency mechanisms, that allow the application to use the replicated components as normal ones on a multithread environment. Indeed, as the components are shared by different replicas, it must exist some mechanisms to avoid incompatible concurrent modifications. With these mechanisms, each replica can be seen as a different thread on a multithread application, accessing shared resources.
  • Support of transactions, to avoid inconsistencies in case that a replica falls down while updating multiple components.

Besides this, Sensei supports as well flexible state transfer mechanisms. Please refer to the documentation section for the technical papers showing these mechanisms.

SenseiDomains defines as well tools to automatically replicate an application; this mechanisms are similar to the model employed in the CORBA fault tolerant service, and they share therefore most of the inconvenients.

A complete description of the methodology and the implementation of SenseiDomains is located in my thesis document, chapters 9 and 10. Nevertheless, these chapters are only available in Spanish. A more general description, this time in English, is given in the article 'Active Replication of Software Components'.

The IDL interfaces of SenseiDomains are listed here (the link opens a different window). The interfaces are spread along the following files:

  • DomainExceptions.idl. Defines the generic exceptions handled by SenseiDomains (some specific exceptions are defined in the other idl files.
  • StateTransfer.idl. Defines all the types related to the state transfer.
  • Properties.idl. Specifies the types associated to the properties and properties handler.
  • SubgroupsHandler.idl. This file defines the types needed to handle subgroups (or components).
  • DomainMessage.idl. Specifies the concept of domain message.
  • Concurrency.idl. Defines the concurrent mechanisms: replicated monitors and transactions.
  • DomainGroupHandler.idl. Defines the concept of domain. It depends on all the previous files.
In addition, the file InternalDomainMessages.idl. defines the messages and other types used internally by SenseiDomains (do not belong, therefore, to the public interface).

Using RMI, the definition is totally equivalent. The files that compose this interface are included in the package sensei.middleware.domains under the rmi structure.

Please note that there is no programming guide. Should you be interested on using it, please refer to the examples. The more generic example is DomainsTest. As an example, it is also useful SenseiGMNS, as it is implemented as a SenseiDomains application.