Angepasste Arbiter für Replikation mehrerer Master entwickeln

Änderungskollisionen können auftreten, wenn dieselben Datensätze gleichzeitig an zwei Stellen geändert werden können. In einer Multimasterreplikationstopologie erkennen Katalogservicedomänen Kollisionen automatisch. Wenn eine Katalogservicedomäne eine Kollision erkennt, ruft sie einen Arbiter auf. Gewöhnlich werden Kollisionen mit Hilfe des Standardkollisionsarbiters aufgelöst. Eine Anwendung kann jedoch auch einen angepassten Kollisionsarbiter bereitstellen.

Vorbereitende Schritte

Informationen zu diesem Vorgang

Wenn eine Katalogservicedomäne eine replizierten Eintrag erhält, der mit einem Kollisionsdatensatz kollidiert, verwendet der Standardarbiter die Änderungen aus der Katalogservicedomäne, deren Name in lexikalischer Reihenfolge am niedrigsten angeordnet ist. Wenn beispielsweise Domäne A und Domäne B einen Konflikt in Bezug auf einen Datensatz verursachen, wird die Änderung aus Domäne B ignoriert. Domäne A behält ihre Version, und der Datensatz in Domäne B wird geändert, so dass er dem Datensatz in Domäne A entspricht. Domänennamen werden zum Vergleich in in Großbuchstaben konvertiert.

Alternativ kann in der Multimaster-Replikationstopologie ein angepasstes Kollisions-Plug-in aufgerufen werden, dass das Ergebnis bestimmt. Diese Anweisungen beschreiben, wie ein angepasster Kollisionsarbiter entwickelt und eine Multimaster-Replikationstopologie konfiguriert wird, damit sie diesen Arbiter verwendet.

Vorgehensweise

  1. Entwickeln Sie einen angepassten Kollisionsarbiter, und integrieren Sie ihn in Ihre Anwendung.
    Die Klasse muss die folgende Schnittstelle implementieren:
    com.ibm.websphere.objectgrid.revision.CollisionArbiter
    Ein Kollisions-Plug-in hat drei Möglichkeiten, das Ergebnis einer Kollision zu bestimmen. Es kann die lokale Kopie oder die ferne Kopie auswählen oder eine überarbeitete Version des Eintrags bereitstellen. Eine Katalogservicedomäne stellt die folgenden Informationen für einen angepassten Kollisionsarbiter bereit:
    • die vorhandene Version des Datensatzes,
    • die Kollisionsversion des Datensatzes,
    • ein Session-Objekt, das verwendet werden muss, um die überarbeitete Version des Eintrags zu erstellen, bei dem die Kollision aufgetreten ist.
    Die Plug-in-Methode gibt ein Objekt zurück, das ihre Entscheidung enthält. Die von der Domäne verwendete Methode für den Aufruf des Plug-ins muss "true" oder "false" zurückgeben, wobei "false" bedeutet, dass die Kollision ignoriert wird. Wenn die Kollision ignoriert wird, bleibt die lokale Version unverändert, und der Arbiter vergisst, dass er die vorhandene Version je gesehen hat. Die Methode gibt den Wert "true" zurück, wenn sie die bereitgestellte Sitzung zum erstellen einer neuen zusammengeführten Version des Datensatzes zum Abgleich der Änderung verwendet hat.
  2. Geben Sie in der Datei objectgrid.xml das angepasste Arbiter-Plug-in an.
    The ID must be CollisionArbiter.
    <dgc:objectGrid name="revisionGrid" txTimeout="10">
        	<dgc:bean className="com.you.your_application.
    						CustomArbiter" id="CollisionArbiter">
        		<dgc:property name="property" type="java.lang.String"
    						value="propertyValue"/>
        	</dgc:bean>
    </dgc:objectGrid>