Einführung

Die Konfiguration der B2B (z.B. Actions, Services, Channels, GlobalProperties, Extensions, Content Mappings) ist in der Datenbank gespeichert. Diese Daten werden in der Regel gecacht, d.h. nur einmal eingelesen wenn sie das erste Mal benötigt werden und dann vom Tomcat im RAM gespeichert. Das bedeutet der Tomcat kennt nur die gecachten Daten und die Änderungen die er selbst durchgeführt hat.

Aufgabe der Cluster Communication ist es, Änderungen die auf einem der Tomcat Knoten realisiert wurden an andere weiterzugeben.

Die alte Cluster Communication, basiert auf einer direkten Kommunikation zwischen den Tomcat-Knoten über das Netzwerk. Es muss eine Verbindung zu jedem der anderen Knoten aufgebaut und auf die Antwort gewartet werden. Unter hoher Last auf den Knoten oder im Netzwerk passiert es gelegentlich dass innerhalb des Timeouts ein Knoten nicht antwortet. Dann wird ein Fehler geworfen und die Aktion abgebrochen, die Änderung ist dann nicht im ganzen Cluster bekannt.

Die neue Cluster Communication protokolliert Änderungen nur in der Datenbank. Auf jedem Knoten läuft ein Service der die Änderungen aus der Datenbank liest und den Cache aktualisiert. Die Kommunikation ist also entkoppelt, kein Knoten muss auf den anderen warten und Änderungen werden auf den Knoten übernommen wenn sie Zeit haben. Der Prozess benötigt dadurch weniger Ressourcen auf jedem Knoten und ist zuverlässiger.

Beschreibung

Die Cluster Communication ist für die Synchronisation der Knoten zuständig. Die CC schaut per Default jede Sekunde ob es eine Änderung gegeben hat und sorgt, falls es eine Änderungen gegeben hat, dafür dass die Singletons auf allen Knoten aktualisiert werden. Folgende Singletons werden aktualisiert:

  1. ActionRegistry

  2. ChannelRegistry

  3. ServiceRegistry

  4. GlobalPropertyRegistry

  5. ContentRegistry

  6. ExtensionRegistry

Einrichtung

Alte Cluster Communication deaktivieren

Dazu müssen drei Global Properties entfernt werden und die B2B durchgestartet werden.

Als erstes die Global Properties entfernen.

B3P_CLUSTER_COMMUNICATION_CLASS

B3P_CLUSTER_IPS_NODES

B3P_CLUSTER_START_PORT

Nun alle Knoten der B2B durchstarten.

Datenbank Tabellen erstellen

Zuerst müssen die folgenden Datenbank Tabellen erstellt werden:

  • B2BBP_DATA_COMMUNICATION

  • B2BBP_DATA_COMMUNICATION_VALUE

Die Datenbank Skripte können bei unserem Support angefragt werden.

Global Properties anlegen

Nun die im Folgenden beschriebenen Global Properties anlegen.

Poll Interval

B3P_CLUSTER_COMMUNICATION_POLL_INTERVALL (Default 1 Sekunde)

Zeitintervall, nach wie vielen Sekunden die Cluster Communication schauen soll, ob es Änderungen gibt. Default: 1 Sekunde

Nachrichten im Monitor

B3P_CLUSTER_COMMUNICATION_SHOW_MESSAGES (Default all)

Mögliche Werte:

  • all

  • normal

  • nothing

Wie viele Informationen sollen die ClusterCommunication im Monitoring liefern? Bei nothing gibt es nur eine Meldung wenn die Knoten asynchron sind.

Art der Verarbeitung

B3P_CLUSTER_COMMUNICATION_STATE

Als letztes folgende Global Property setzten. Damit beginnt die Cluster Communication zu arbeiten.

Mögliche Werte:

  • auto

  • manual

  • off

Änderungen werden automatisch oder per Button aktiv.

Ausgeschlossene Knoten

B3P_CLUSTER_COMMUNICATION_NOT_USE_NODES (Default 99)

Bei dieser Global Property können Knotennummern angegeben werden, welche von der neuen Cluster Communication nicht berücksichtigt werden. Mehrere Knoten können durch „,“ bzw „;“ getrennt angegeben werde.

Beispiel: B3P_CLUSTER_COMMUNICATION_NOT_USE_NODES = 99.

Hier aufgeführte Knoten erzeugen außerdem keine Knoten NODE_XX ist nicht synchron Nachrichten im Monitoring. Wenn in der GlobalProperty alle Knoten aufgeführt werden, welche nicht synchron sind, wird keine Nachricht im Monitoring erzeugt. Wenn nur ein Teil der asynchronen Knoten aufgeführt ist, wird die Nachricht im Monitoring auf die übrigen Knoten reduziert.

Eine Änderung dieser Property erfordert einen Neustart der B2B-Knoten.

Benutzeroberfläche

Für das manuelle Auslösen der Synchronisation muss das Admin Panel per Override eingebunden werden. Dies geschieht wie gewohnt über „Benutzer und Rollen Administration“, „Attribute“, „Hinzufügen“. Das Override lautet wie folgt:

Override={view=administrationView,type=AddChild,target=adminViews,name=org.b2bbp.ui.views.AdminPanelView,value=[id:'AdminPanelView';label:'Admin']}

Dieses Attribut kann dann unter „Rollen“ den Rollen zugeordnet werden für die das Panel aktiv sein soll.

ClusterCommunicationTestAction

Funktionsbeschreibung

Mit dieser Action kann getestet werden ob die Cluster Communication für Extensions auf einem Knoten korrekt funktioniert. Ist die Action grün dann arbeitet die Cluster Communication korrekt. Ist die Action rot so gibt es ein Problem mit der Cluster Communication. Diese Action bitte nicht in Produktiv genutzten Channels verwenden da die Action 10 Sekunden lange läuft.

Konfiguration

Zur Konfiguration ist nur das anlegen der Extension CLUSTER_COMMUNICATION_TEST_EXTENSION notwendig.Die Extension kann ohne Inhalt angelegt werden. Von derAction wird dann das aktuelle Datum in Millisekunden in die Extension geschrieben.

View Me   Edit Me