1

現在、水平方向のディストリビューションで ActivePivot 4.3 を使用しています。

過去の日数ごとにデータを分割します。ロードが高速であっても、ユーザーが部分的にロードされたノードにアクセスできるようにしたくありません。

ロード中はクラスター外にノードを配置し、準備ができたら参加させたいと考えています。また、メンテナンス中の場合は、クラスターから除外することもできます。これを実現するには、ノードがクラスターに参加/脱退する方法を制御する必要があります。

JMX を介した制御があると思いますが、これらの制御をプログラムで、理想的には Web サービスを介してアクセスできるようにしたいと考えています。

どうすればそれを実装できますか?

4

1 に答える 1

1

ActivePivot 4.3.3 では、次のように実現できます。

完全にロードされる前にノードがクラスターに参加するのを防ぐには、「autoStart」ディストリビューション プロパティを false に設定します。

schema.xml ファイルに、次のコードを追加します。

...
    <distributionDescription>
        <distributedPivotId> xxxx </distributedPivotId>
        <clusterId> xxxx </clusterId>
        <distributionType> xxxx </distributionType>
        <properties>
            <entry key="autoStart" value="false" />
        </properties>
    </distributionDescription>
...

そうすると、ネットワークを介した通信を担当するメッセンジャー コンポーネントが開始されません。手動で行う必要があります。

このコンポーネントを開始するには、その「start()」メソッドを呼び出す必要があります。JMX ツールを使用せずにプログラムで実行する場合は、「ActivePivotManager」コンポーネントを使用する必要があります。ActivePivot の複数のインスタンスを取得するメソッドを提供します。これを使用して、目的の分散 ActivePivot を取得します。

最後に、分散 ActivePivot から「getMessenger()」メソッドを使用して、メッセンジャー コンポーネントを取得し、起動します。検討中のノードがクラスターに参加します。

マネージャーがいると仮定すると、コードは次のようになります。

ADistributedActivePivot myDistributedPivot = (ADistributedActivePivot) manager.getActivePivots().get("myDistributedPivot"); // Change it to the Id of your distributed pivot
myDistributedPivot.getMessenger().start();

ノードをクラスターに参加/脱退させるには、そのメッセンジャーから「pause()」および「resume()」メソッドを自由に使用できます。

于 2012-10-03T16:08:55.877 に答える