|
The figure
below presents the Java packages of the P2P Grid, depicted as
colored boxes. In addition a further package grid.models
exists that consists of the classes PeerData,
RemotePeer, PeerAddress, JobDescriptor and ProcessDescriptor, which
are also shown in the figure. All these classes define data
structures that constitute the framework for the entire system,
whereas in the classes Peer,
ProcesssManagement,
and ExecutionManagement
the implementation of specific tasks is defined.

A
single peer represents a finite state machine that is implemented in
the class Peer of the
package grid.peer and can be started by the class Connector.
The state of a peer depends on the particular role a peer currently
plays. If the peer was assigned to be a Primary or Secondary
Scheduler methods and threads of the class ProcessManagement in the
package grid.scheduling are executed. If the peer plays the
role of a Worker, then the JavaGo migration server has started an
independent JMPI process induced by the Primary Scheduler from
remote via a migrationCall. A JMPI process frequently calls MPI
methods of the package grid.MPI, which in turn access methods
provided by the ExecutionManagement
in the package grid.worker. Since the JMPI process is
managed as a separate process, all communication between the JMPI
process and the local peer is based on the communication layer in
the package grid.com,
while MPI classes used by the JMPI process have direct access on
methods of the execution management. The later holds the r2nTable
and provides methods to
classes of the MPI package, which translate ranks into IP
addresses, pass port addresses to MPI classes and handle timeout
exceptions.
|
|
Information
about the local peer is stored in an object of the class PeerData. The constructor
of this class expects a unique identifier (id); the address of the
local peer and its performance as parameters. For the purpose of
storage and easy exchange of addresses a serializable object of the
class PeerAddress is
defined that includes the IP address and certain ports of the peer.
During the startup of the system the hash map knownPeers is filled with
a set of friends that are read from the file settings/friends.tab.
This hash map is an instance of the class RemotePeer and linked to
the PeerData object.
The same holds true for the hash map availablePeers, which
holds topological information in terms of round trip times and
disposition values. This hash map is managed and frequently updated
by the class topological
information service inside the package grid.scheduling. The
class ProcessManagement
in the same package accomplishes the checkpointing and the
disposition based process scheduling. It is used by the Primary and
Secondary Scheduler. In contrast to the the class ExecutionManagement used
by the Workers, it is constructed by the class peer with a reference to
the PeerData object.
Therefore the process management has direct access to the hash map
availablePeers and
thus to the disposition values stored inside the hash map.
|