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.