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.
|