社内se × プログラマ × ビッグデータ

プログラミングなどITに興味があります。

ZooKeeper アンサンブル接続、リーダー選出、データ同期

Zookeeper は分散システム管理を行うためのツールです。

http://oss.infoscience.co.jp/hadoop/zookeeper/docs/r3.3.1/index.html

http://open-groove.net/zookeeper/zookeepr-config/

 

難しい分散アプリケーションを構築するにあたって、便利な仕組みを提供してくれるようです。

Zookeeper について調べていた内に、上の記事でなるほどと思ったことについて列挙します。(より基本的な内容は割愛しています。すみません)

複数のサーバで ZooKeeper アンサンブルを構成することで、高い可用性を実現することが出来るようなので、出来れば近い内に、簡単なアプリを作って動作確認をしてみたいところです。

 

ZooKeeperサーバ間の接続について

- リーダーとメンバー間のみで接続される。

- 基本的にメンバー間での接続は発生しない。(リーダー選出時と、リーダーを捜す時は、メンバー間での通信が発生する)

 

リーダーの選出について

- ZooKeeper サーバの起動時(アンサンブル形成時)に、リーダーが選出される。

- 過半数のサーバからの承認を得た上で、リーダーとしての活動を開始する。

- リーダーのサーバが停止した場合、稼働中のサーバ間で改めてリーダーの選出を行う。

- リーダー選出のアルゴリズムは3らしい。(electionAlg=3)

 

データの同期について

- 全てのデータ同期処理は、リーダーを通して行われる。

- リーダーは各ZooKeeper サーバからの更新要求を順次受け付け、全ての ZooKeeper サーバに対して、更新要求を送信する。

- 過半数以上のサーバから承認を得た上で、その変更内容を COMMIT する。(全ての ZooKeeper サーバへ通知する)

- メモリ内にデータが保持されるため、スループット(特に読み込み)が速い。