| |
Um nun konkret die Verlagerung umzusetzen, muss das System in einen
Ausnahmezustand gebracht werden, da sonst Folgefehler drohen. Dabei
gibt es folgende Alternativen:
- Das komplette System wird angehalten, um dann im Ruhezustand die
Verlagerungsentscheidung zu treffen und die notwendigen Verlagerungen
durchzuführen. Danach wird das System wieder auf Normalbetrieb
umgestellt.
- Besser ist es, wenn während der Verlagerungsentscheidung zumindest
die noch funktionsfähigen Teile des Systems weiterarbeiten können und
erst zur eigentlichen Verlagerung das ganze System angehalten wird.
- Sollen die Ausfallzeiten möglichst kurz gehalten werden, kann das
System auch nur lokal, also nur die direkt betroffenen Systemteile,
angehalten werden. Dies ist jedoch insofern problematisch, als in
dieser Zeit leicht neue Fehler entstehen können, z.B. durch verloren
gegangene Nachrichten.
Soll ein System sehr zuverlässig arbeiten, muss eine weitere
Problematik bedacht werden: Der Rekonfigurator selbst kann fehlerhaft
sein und schlimmstenfalls zerstörende Verlagerungen vornehmen, deshalb
muss bei hohen Ansprüchen auch er fehlertolerant sein.
Dabei gibt es folgende Ansätze:
- Begrenzte Rekonfigurierung: Der Rekonfigurator darf immer nur so
viele Komponenten verlagern wie Fehlermeldungen vorliegen. Reicht dies
nicht aus, so können weitere Verlagerungen erst nach neue
Fehlermeldungen vorgenommen werden.
- Vorbehaltliche Rekonfigurierung: Der Rekonfigurator darf
Komponenten nur ein-, nicht jedoch ausgliedern. Erst wenn das System
eine Zeit lang fehlerfrei läuft, nimmt ein Zweitrekonfigurator
Ausgliederungen vor; dabei kann er sich nur zwischen den Vorschlägen
des ersten Rekonfigurators und der ursprünglichen Konfiguration
entscheiden.
- Unselbständige Rekonfigurierung: Der Programmierer oder Bediener
selbst greift ein und bestätigt die Vorschläge des Rekonfigurators.
Unter anderem existieren folgende Alternativen bei der Implementierung
eines fehlertoleranten Rekonfigurators:
- Begrenzte Rekonfigurierung mit Test-Instanz: Die einzelnen
Komponenten befolgen Anweisungen des Rekonfigurators nur dann, wenn
auch eine von der Test-Instanz signierte Fehlermeldung vorliegt.
- n-von-m-Rekonfigurator: Die Verlagerung wird nur dann
durchgeführt, wenn bei m vorhandenen Rekonfiguratoren mindestens n von
ihnen die selbe Entscheidung treffen. Problematisch kann es hier
werden, wenn die Algorithmen zur Entscheidungsfindung
indeterministisch sind oder die Fehlermeldungen in verschiedenen
Reihenfolgen bei den einzelnen Instanzen eintreffen.
- Rekonfigurierbarer Rekonfigurator: Im Fehlerfall wird zunächst wie
gewohnt von einem Primärrekonfigurator rekonfiguriert; bei erneuten
Fehlern greifen Sekundärrekonfiguratoren ein, die entweder den
Primären zurücksetzen oder, wenn mehrfach nach Verlagerungen wieder
Fehler auftauchen, selbst Verlagerungsentscheidungen treffen.
- Verteilter Rekonfigurator: Hier besteht der Rekonfigurator aus
mehreren Modulen, die lokal autonome Entscheidungen treffen. Dabei
wird über geeignete Protokolle sichergestellt, dass auch bei einzelnen
Fehlentscheidungen eine global korrekte Verlagerung vorgenommen wird.
In der Praxis werden diese Ansätze auch häufig miteinander kombiniert.
Zusammenfassend kann gesagt werden, dass in ein System, das wirklich
auf lange Sicht hin ausfallfrei arbeiten soll, viel
Entwicklungsaufwand und Geld gesteckt werden muss.
|
| |
|
|