Beispielkonfigurationsdateien für verteilte Systeme

Im Folgenden werden einige Beispiele zu verschiedenen Anwendungsfällen von verteilten Systemen beschrieben.

Anmerkung:

Wenn die Systemnummer eines NGA-Projektes, das bereits einmal gelaufen ist, geändert wird, werden die folgenden Nachrichten beim ersten Start des Projektes nach der Änderung der Systemnummer angezeigt:

WCCOAnextgenarch(118), 2021.10.07 11:00:07.985, IMPL, SEVERE, 69, Database error, Could not convert value to influx line because the variable 'System1:_ReduManager.ErrorChangeReason' has no entry inside the metadata table (from _NGA_B_InfluxDB)

WCCOAnextgenarch(118), 2021.10.07 11:00:07.997, IMPL, SEVERE, 69, Database error, Could not convert value to influx line because the variable 'System1:_ReduManager.MyErrorStatus' has no entry inside the metadata table (from _NGA_B_InfluxDB)

WCCOAnextgenarch(118), 2021.10.07 11:00:08.008, IMPL, SEVERE, 69, Database error, Could not convert value to influx line because the variable 'System1:_ReduManager.MyErrorStatusRemote' has no entry inside the metadata table (from _NGA_B_InfluxDB)

WCCOAnextgenarch(118), 2021.10.07 11:00:08.020, IMPL, SEVERE, 69, Database error, Could not convert value to influx line because the variable 'System1:_ReduManager.ErrorChangeReason' has no entry inside the metadata table (from _NGA_B_InfluxDB).

Beispiel 1

Verteiltes System bestehend aus 2 Systemen:

Abbildung 1. Verteiltes System bestehend aus 2 Systemen

Um ein verteiltes System bestehend aus zwei verschiedenen Systemen die miteinander verbunden sind (System1 und System2), aufzusetzen, werden folgende Einträge auf den zwei Systemen benötigt:

System1 (Hostname Host1):

[general]

distributed = 1

#System1 benötigt keinen distPeer-Eintrag da es Server für System2 ist

System2 (Hostname Host2):

[general]

distributed = 1

[dist]

distPeer = "Host1" 1 #Baue eine Verbindung zum Host1 (des System1) auf, #Systemnummer 1

Beispiel 2

Verteiltes System bestehend aus 4 Systemen alle miteinander verbunden:

Abbildung 2. Verteiltes System bestehend aus 4 Systemen

Um ein verteiltes System bestehend aus vier verschiedenen Systemen (System1, System2, System3 und System4 ) aufzusetzen werden folgende Einträge benötigt (In diesem Beispiel ist das System4 Server für alle anderen Systeme, System3 ist Client für System4 und Server für System1 und System2. System2 ist Client für System3 und System4 und Server für System1. System1 ist Client für alle anderen Systeme):

System1 (Hostname Host1):

[general]

distributed = 1

[dist]

distPeer = "Host2" 2 #Baue Verbindung zum Host2 (des System2) auf, #Systemnummer 2

distPeer = "Host3" 3 #Baue Verbindung zum Host3 (des System3) auf, #Systemnummer 3

distPeer = "Host4" 4 #Baue Verbindung zum Host4 (des System4) auf, #Systemnummer 4

System2 (Hostname Host2):

[general]

distributed = 1

[dist]

distPeer = "Host3" 3 #Baue Verbindung zum Host3 (des System3) auf, #Systemnummer 3

distPeer = "Host4" 4 #Baue Verbindung zum Host4 (des System4) auf, #Systemnummer 4

System3 (Hostname Host3):

[general]

distributed = 1

[dist]

distPeer = "Host4" 4 #Baue Verbindung zum Host4 (des System4) auf, #Systemnummer 4

System4 (Hostname Host4):

[general]

distributed = 1

Beispiel 3

Verteiltes System (bestehend aus 7 verschiedenen Systemen) mit einer hierarchischen Struktur (Alle Systeme mit dem System1 verbunden. System5 verbunden mit System2 und System6 und 7 verbunden mit System3).

In einer hierarchischen Struktur ist die beste Lösung, dass das System auf höchster Ebene der Server für alle andere Systeme ist, die Systeme auf niedrigster Ebene sind Clients für alle andere Systeme und die Systeme auf mittlere Ebene sind Server für alle Systeme unterhalb und Clients für Systeme oberhalb. Das hat zwei Vorteile: Sie brauchen weniger Config-Einträge und wenn Sie Systeme der unteren Ebene hinzufügen, brauchen Sie die Config-Dateien der oberen Systeme nicht ändern (daher müssen Sie auch nicht die oberen Systeme neu starten).

Abbildung 3. Verteiltes System bestehend aus 7 verschiedenen Systemen

System1 (Hostname Host1):

[general]

distributed = 1

System1 benötigt kein distPeer-Eintrag, da er Server ist.

System2 (Hostname Host2):

[general]

distributed = 1

[dist]

distPeer = "Host1" 1 #Baue Verbindung zum Host1 (des System1) auf, #Systemnummer 1

System3 (Hostname Host3):

[general]

distributed = 1

[dist]

distPeer = "Host1" 1 #Baue Verbindung zum Host1 (des System1) auf, #Systemnummer 1

System4 (Hostname Host4):

[general]

distributed = 1

[dist]

distPeer = "Host1" 1 #Baue Verbindung zum Host1 (des System1) auf, #Systemnummer 1

System5 (Hostname Host5):

[general]

distributed = 1

[dist]

distPeer = "Host1" 1 #Baue Verbindung zum Host1 (des System1) auf, #Systemnummer 1

distPeer = "Host2" 2 #Baue Verbindung zum Host2 (des System2) auf, #Systemnummer 2

System6 (Hostname Host6):

[general]

distributed = 1

[dist]

distPeer = "Host1" 1 #Baue Verbindung zum Host1 (des System1) auf, #Systemnummer 1

distPeer = "Host3" 3 #Baue Verbindung zum Host3 (des System3) auf, #Systemnummer 3

System7 (Hostname Host7):

[general]

distributed = 1

[dist]

distPeer = "Host1" 1 #Baue Verbindung zum Host1 (des System1) auf, #Systemnummer 1

distPeer = "Host3" 3 #Baue Verbindung zum Host3 (des System3) auf, #Systemnummer 3

Anmerkung:

Bei einem bereits vorhandenen Projekt können Sie die Systemnummer und der Systemname über das Tool WCCOAtoolSyncTypes geändert werden. Beachten Sie, dass das Projekt gestoppt ist und starten Sie WCCOAtoolSyncTypes über die Kommandozeile wie folgt:

WCCOAtoolSyncTypes -system 3 newSysName -proj "Demo_3.18

Wie oben angezeigt, geben Sie zuerst die Systemnummer und dann den Systemnamen an.

Die Systemnummer und der Name können im CONTROL über die Funktionen getSystemName()und getSystemId()abgefragt werden.

main()
{
  int sysId;
  string sysNam;
  sysNam = getSystemName();
  DebugN("NAME IST:",sysNam);
  sysId=getSystemId(sysId);
  DebugN("ID IST:",sysId);
}