私たちは、製品にハローキャスト分散ロック機能とキャッシュ機能を使用しています。分散ロックの使用は、ビジネスロジックにとって非常に重要です。Hazelcast - クライアントモード - クラスタ障害後の復旧方法
現在、私たちは組み込みモードを使用しています(各アプリケーションノードはヘーゼルキャストクラスタメンバーです)。クライアント - サーバーモードに切り替えるつもりです。
クライアント - サーバで気づいた問題は、ある期間クラスタがダウンした後、いくつかの試行後にクライアントが破棄され、そのクライアントから取り出されたオブジェクト(マップ、セットなど)がより長い使用可能。
:クライアントのインスタンスは(私たちはHazelcastInstanceNotActiveExceptionを受け取る)Hazelcastクラスタが復旧した後もを回復しない はまた、私はこの問題は、数回に対処し、機能要求として終わってきたことを知っています
私の質問:何がすべきクライアントを回復する戦略ですか?現在、以下のようにクライアントプロセスでタスクをエンキューする予定です。条件に基づいて、クライアントインスタンスを再起動しようとします... クライアントが実行されているかどうかは、clientInstance.getLifecycleService()。isRunning()checkによってチェックされます。ここで
は、タスクコードです:
private class ClientModeHazelcastInstanceReconnectorTask implements Runnable {
@Override
public void run() {
try {
HazelCastService hazelcastService = HazelCastService.getInstance();
HazelcastInstance clientInstance = hazelcastService.getHazelcastInstance();
boolean running = clientInstance.getLifecycleService().isRunning();
if (!running) {
logger.info("Current clientInstance is NOT running. Trying to start hazelcastInstance from ClientModeHazelcastInstanceReconnectorTask...");
hazelcastService.startHazelcastInstance(HazelcastOperationMode.CLIENT);
}
} catch (Exception ex) {
logger.error("Error occured in ClientModeHazelcastInstanceReconnectorTask !!!", ex);
}
}
}
は、適切なこのアプローチですか?私はLifeCycleのイベントも聞いてみましたが、イベントを介して動作させることはできませんでした。
みなさま