Apache ZooKeeper の基本について調べてみる
概要
・分散アプリケーションを構築する上では、同期、設定管理、グルーピング、名前管理などの機能が必要となる。
→これらの実装は複雑で面倒なもの
→Zookeeper はこれらの機能を提供してくれる
・ただし、Zookeeper が提供するのは、基本機能要素そのものではなく、基本機能要素を独自に実装できるようにするための、ファイルシステム的なAPIを提供する。
・基本機能要素を実装したものをレシピと呼ぶ。
→レシピは znode と呼ばれる小さいデータノードの操作で構成される
・ ZooKeeper はJavaで書かれており、 jvm 上で動作可能。
・ znode を生成、削除したり、znode にデータを格納するようなものが提供されている
・ ZooKeeper クライアントは、ZooKeeper サービスに接続し、セッションを確立する。
→セッションを通してAPIを呼び出す
注意点
・ znode のデータは部分的に書いたり、読み出したりすることはできない
→完全置き換え、完全読み出し
→原子性の確保とも言えるかも
znode のモード
・永続(persistent) znode
→意図的に delete しないと削除されない
→これを作成したクライアントセッションが無くなったとしても、維持しなければならない場合に役立つ
・短命(ephemeral) znode
→作成したクライアントがクラッシュしたり、接続がクローズされると自動的に削除される
→これを作成したクライアントセッションが有効な間だけ存在するべき情報を保持する場合に役立つ
→クライアントから意図的に削除することも可能。作成したクライアントでなくても削除可能。
→基本的に消えてしまう性質から、短命 znode には子ノードは作成できない。(今も?)
・シーケンシャル znode
永続 znode、短命 znode 何れもシーケンシャルにすることが可能。
→znode にユニークな番号を付与するのに便利