2012-03-15 5 views
3

Zookeeperを使ってサーバにシャード番号を割り当てる方法についてオンラインでいくつかの記事を見ましたが(クラスタ全体のデータをシャーディングすると仮定して)、私の人生はJavaコードを見つけることができませんこれを行う方法の例。誰もがすでにこの作業をしていますか?ありがとう。シャードインデックスを割り当てるためのZookeeper

答えて

2

レプリケーションや障害からの復旧など、クラスタ全体のシャーディングデータには多くの詳細があります。私はあなたがNノードを持っており、各ノードが1/N番目の要求を処理しなければならないということをシャーディングすると仮定しています。

最初に永続ノード/serviceを作成します。各サーバーは、起動時にのような/serviceという子のephemeralという子を作成します。クライアントは/servicewatchを維持し、子供が追加されたり削除されたりすると通知を受けます(クライアントは通知のたびに時計を更新する必要があります)。このようにして、クライアントは要求を処理しているサーバーを認識し、必要に応じて要求を分散できます(ラウンドロビン、ランダム)。サーバーが停止すると、一時的なノードが消え、クライアントは要求の送信を停止できます。

飼育係ライブラリをお探しの場合は、おそらくcuratorが最適です。クライアントはPath-Cacheを使用しますが、サーバは単純に一時的なノードを作成します。

関連する問題