マルチマスター・レプリカ生成のためのカスタム・アービターの作成

同じレコードが 2 個所で同時に変更される可能性がある場合には、変更の競合が生じることがあります。 マルチマスター・レプリカ生成トポロジーでは、カタログ・サービス・ドメインは競合を自動的に検出します。 カタログ・サービス・ドメインは競合を検出すると、アービターを呼び出します。 通常、競合は、デフォルト競合アービターを使用して解決されます。 ただし、アプリケーションでカスタム競合アービターを提供できます。

始める前に

このタスクについて

カタログ・サービス・ドメインが競合レコードと対立する複製項目を受け取った場合、 デフォルト・アービターは、字句的に最も小さい名前のカタログ・サービス・ドメインからの変更を使用します。 例えば、ドメイン A と B によってレコードの競合が生じる場合には、ドメイン B の変更は無視されます。 ドメイン A はそのバージョンを保持し、ドメイン B のレコードは、ドメイン A のレコードに一致するように変更されます。 比較では、ドメイン・ネームは大文字に変換されます。

代わりのオプションとしては、マルチマスター・レプリカ生成トポロジーで、カスタム競合プラグインによって結果を決定します。 ここでは、カスタム競合アービターを開発して、そのアービターを使用するようにマルチマスター・レプリカ生成トポロジーを構成する方法の概要を説明します。

手順

  1. カスタム競合アービターを開発して、そのアービターをアプリケーションに統合します。
    クラスは次のインターフェースを実装する必要があります。
    com.ibm.websphere.objectgrid.revision.CollisionArbiter
    競合プラグインには、競合の結果を決定するための 3 つの選択肢があります。 ローカル・コピーを選択するか、リモート・コピーを選択するか、項目の改訂バージョンを提供できます。 カタログ・サービス・ドメインは、以下の情報をカスタム競合アービターに提供します。
    • レコードの既存バージョン
    • レコードの競合バージョン
    • 競合項目の改訂バージョンを作成するために使用する必要があるセッション・オブジェクト
    プラグイン・メソッドは、決定を示すオブジェクトを返します。 プラグインを呼び出すためにドメインによって呼び出されたメソッドは、true または false を返す必要があります。 false は競合を無視することを意味します。競合を無視すると、ローカル・バージョンはそのまま変更されず、 アービターは既存バージョンの存在をなかったものとします。メソッドが提供されたセッションを使用し、レコードのマージされた新バージョンを作成して変更を調整した場合には、メソッドは値 true を返します。
  2. objectgrid.xml ファイル内で、カスタム・アービター・プラグインを指定します。
    ID は 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>