3章ZooKeeper API入門

前章では、zkCliを用いて基本的なZooKeeperの操作を紹介した。本章では、アプリケーションで実際にどのようにAPIを用いるかを見ていく。まず、ZooKeeperのAPIを使ったプログラミングを紹介し、セッションの作り方とWatcherの実装法を紹介する。さらに、マスタ・ワーカのサンプルアプリケーションを書く。

3.1 ZooKeeper CLASSPATHの設定

ZooKeeperのJavaプログラムをコンパイルし、実行するためには適切にクラスパスを設定しなければならない。ZooKeeperは、本体のJARファイル以外にも多くのサードパーティライブラリを用いる。タイピングを少しだけ楽にし、読みやすくするために、環境変数CLASSPATHに必要なすべてのライブラリを入れておこう。ZooKeeperの配布パッケージのbinディレクトリのzkEnv.shが環境変数を設定してくれる。このスクリプトを次のように実行する。

ZOOBINDIR="<配布パッケージのパス>/bin"
. "$ZOOBINDIR"/zkEnv.sh

(Windowsではピリオドの代わりにcallを用い、zkEnv.shではなくzkEnv.cmdスクリプトを用いる。)

スクリプトを実行すれば、CLASSPATH変数が正しく設定される。これらを用いてJavaプログラムをコンパイルし実行する。

3.2 ZooKeeperセッションの作成

ZooKeeper APIはZooKeeperハンドルを中心に構成されている。ハンドルはすべてのAPI呼び出しで用いられる。このハンドルは、ZooKeeperとのセッションを表している。図3-1に示すように、ZooKeeperの1つのサーバとの間に確立したセッションは、その接続が途絶えると他のZooKeeperサーバにマイグレートする。セッションが生きている限り、ハンドルは有効である。ZooKeeperクライアントライブラリは、セッションを維持するために、ZooKeeperサーバとの接続を維持しようとし続ける。ハンドルがクローズされた場合は、ZooKeeperクライアントは、サーバが接続を遮断したのだとわかる。ZooKeeperはクライアントが死んだと判断すると、セッションを無効化する。その後クライアントが、無効化されたセッションに対応するハンドルを使ってZooKeeperサーバに接続しようとすると、ZooKeeperサーバはクライアントライブラリにそのセッションが無効になっていることを知らせる。するとそのハンドルを使った操作はすべてエラーを返す。 ...

Get ZooKeeperによる分散システム管理 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.