2017-01-25 2 views
0

私はApache Curatorのドキュメントを読んでいますが、セッションの有効期限が切れたときに適用しようとしているポリシーは何かを正確に理解できません。セッションが終了するとApache Curatorはどのように再接続を試みますか?

直ちに接続をLOSTに設定するか、すべてのウォッチャーを再接続して再確立することを再試行し、失敗したN回の試行後に接続をLOSTに設定するか?

再確立しようとすると、一時的なノードと時計が正しくリセットされますか?

答えて

0

まず、健康なアンサンブルへの接続を再確立するまで、ZooKeeperセッションの有効期限(クライアントの観点から)は発生しません。つまり、あなたが再接続するまであなたのセッションが終了したことを知らないということです。

Apache Curator(注:私は主著者です)は、「接続状態」の概念を紹介しています。これは、ZooKeeperの内部概念の上に抽象化されています。重要なのは、キュレーターの接続状態の処理が、3.xおよびそれ以前のバージョンから変更されていることです。

3.xより前では、キュレーターの接続状態はZooKeeperセッションと関係がありませんでした。接続状態LOSTは、構成されたRetryPolicyが放棄したことを意味します。キュレーター3.x以降では、アンサンブルへの接続が失われたとき、キュレーターは内部タイマーを設定し、そのタイマーがZooKeeperアンサンブルに再接続する前にネゴシエートされたセッションタイムアウトを通過すると、キュレーターはLOSTに変わり、セッションタイムアウトを「偽」します内部的に管理されたZooKeeperハンドル

これは、ここで説明されていますhttp://curator.apache.org/errors.html

+0

おかげ@Randgalt、私は、ドキュメントを読んで、私はまだ混乱していました。 バージョン3.x以上では、セッションの有効期限が切れた後(時計回り/一時的なノード)に接続を回復するために何もしないので、手動でそれらを手動で処理する必要がありますか? – rodi

+0

生APIに書き込む場合は、はい、あなたは時計を回復する必要があります(できない方法はありません)。ただし、あらかじめ作成されたキュレーターレシピを使用すると、これはすべて処理されます。私はいつもこう言います:https://cwiki.apache.org/confluence/display/CURATOR/TN6 – Randgalt

関連する問題