DiMaWo philosophy

A DiMaWo application is composed of agents interacting by sending messages to each other. Each agent can be seen as running its own thread and all inter-agent communications are asynchronous.

The main reason for this is to avoid as much as possible mutual exclusion or dead-lock problems in highly parallel applications. Finally, the asynchronous nature of communications between agents is well suited to the distribution of agents among several computers and therefore the transmission of some messages through the network.

Writing a DiMaWo application...

... is a relatively easy task: the user must implement a master/worker factory (implementing MasterWorkerFactory interface). This factory instantiates 2 classes the user must also provide: a "master" class (subclass of MasterAgent) and a "worker" class (subclass of WorkerAgent) respectively implementing the master process and the worker process. In order to write scalable distributed applications, the master should interact as little as possible with the workers.

Master and workers are able to communicate through a message passing interface provided by the Distributed Agent (DA) (implemented by class DistributedAgent). The DA is the agent that actually instantiates a worker and/or a master on a particular computer. The message passing interface agent, called Communicator, is accessible through DA's getCommunicator() method.

More advanced services like broadcast, distributed file system, barrier synchronization, etc. are provided by the DA. See documentation for more details.

API documentation

This link points to DiMaWo's latest version's (0.1) documentation.