2. System Overview
The whole system is written entirely in Java and consists of a mobile
agent manager (MAM) that provides the basis for agent-based applications.
On top of this MAM, different agents can be created (user-induced), they
can migrate, communicate with other agents and change their internal state.
Applications like the Information Personae project, can then use these
agents in order to reach certain goals.
Thus, the MAM system can be divided into three parts:
-
The runtime system (MAM),
-
the agents running on top of the runtime system, and
-
the application running on top of the agents.
The following picture shows this graphically:
In this section, we will give an overview of each part. The following
sections will discuss each part in more detail.
2.1 The Runtime System Layer
The runtime system provides certain levels of transparency to the higher
layers. Its main task is to provide the view of a single non-distributed
system to the agents on top of it instead of a networked system with all
the complexity involved with it. This includes providing simple communication
services for the agents without having to specify network locations and
migration services to enable agents to migrate "closer" to another agent.
Again, the agents do not need to know about the underlying network structure,
they only see other agents.
Another transparency type provided by the runtime system is fault-tolerance.
Even when nodes of the distributed system fail, the agents should not notice
that or be affected by it. This is especially important since the final
system should be an open system allowing people (and nodes) to join in
arbitrarily. As always when not using proprietary hardware, no assumptions
can be made about the reliability of single nodes.
It is worth to note that the MAM is completely independant of the application
running on top of it. It is even possible to introduce and start new agent
types "on the fly" while the system is running. Therefore, in fact not
only one application is running but several ones may be executed at the
same time and may even interact with each other to obtain their goals.
2.2 The Agents Layer
The agents layer consists of a set of agents interacting with each other
via message exchange. Each agent can migrate to other agents in order to
improve the overall runtime. For example, if communication between agents
requires a lot of data exchange it may be advantageous to move these agents
close to each other. However, if the communication requires only a small
amount of data to be exchanged, the migration cost may be higher than just
sending the message(s) to the other agent(s). Here the application developer
has to decide which strategy is best.
2.3 The Application Layer
Applications running on top of the MAM system normally provide user interaction
via special agents (cf. LoginAgent, DisplayAgent). These in turn will activate
other agents that start migrating and collecting information in the system.