Next: Methode receive_agent(...)
Up: 6.3.2 Klasse AgentManager
Previous: Methode create_agent(...)
Diese Methode nimmt die tatsächliche Migration des Agenten vor.
Es gibt zwei prinzipiell Ansätze, wie bei der Migration
vorgegangen werden kann:
- ein Agent muß weiterlaufen: der Agent wird suspendiert,
kopiert, serialisiert, zum Zielagentensystem gesendet, dort
deserialisiert und gestartet. Ist dieser Vorgang fehlerfrei durchgeführt
worden, so wird der ursprüngliche Agent
auf dem Quellagentensystem terminiert, ansonsten wird er wieder gestartet.
Problematisch bei diesem
Ansatz ist, daß zur gleichen Zeit zwei Agenten derselben Klasse
laufen. Es kann damit leicht zu Konfliktsituationen, z.B beim
Naming Service, kommen.
- jede mögliche Konfliktsituation wird vermieden: d. h., der Agent
wird suspendiert, kopiert, serialisiert und schon jetzt auf dem
Quellagentensystem terminiert. Nun wird der serialisierte Agent zum
Zielagentensystem gesandt, dort deserialisiert und gestartet. Das
Problem bei diesem Ansatz ist, daß falls bei der Migration ein
Fehler auftritt, weder auf dem Quell- noch auf dem Zielagentensystem
ein Agent dieses Typs läuft.
Der Autor hat sich für den zweiten Ansatz entschieden, da die möglichen
Konfliktsituationen des ersten Ansatzes eventuell das gesamte Managementsystem
in Mitleidenschaft ziehen.
Es soll auch die Möglichkeit bestehen, bereits suspendierte Agenten zu
migrieren. Damit ein Agent auf dem Zielagentensystem nicht gestartet wird,
muß dem Zielagentensystem der aktuelle Zustand des Agenten übermittelt
werden.
Das hat zur Folge, daß bevor der Agent auf dem Quellsystem terminiert wird,
sein aktueller Zustand in den Bytestrom geschrieben wird, da sonst das
Zielagentensystem annimmt, daß der Agent terminiert ist und nicht
mehr gestartet wird. Erst dann kann der Agent serialisiert
werden.
Nun ruft der AgentManager die Methode receive_agent(...) auf dem Zielagentensystem auf.
Next: Methode receive_agent(...)
Up: 6.3.2 Klasse AgentManager
Previous: Methode create_agent(...)
Copyright Munich Network Management Team