9章ZooKeeperの内部構造
本章は他の章と比べると少し変わっている。本章は、ZooKeeperを用いたアプリケーションを作る方法に関連した何かを明示的には説明するものではなく、ZooKeeperがどのようにして高性能を保ちながら耐故障性を得ているのかを、内部構造とプロトコルの概要と機構から説明する。本章の内容は、どうしてZooKeeperが現在の実装のようになっているのかを深く理解するために重要だ。そして、ZooKeeperを管理するにはこの深い理解が重要なのだ。また、結果として、本章は次章の準備となるはずだ。
これまでの章で見てきた通り、ZooKeeperは、サーバのアンサンブル上で動作する。クライアントはこれらのサーバにアクセスし、操作を実行する。クライアントが送った操作を実際にどのようにして実行するのだろうか?まず、「2章 ZooKeeperを制御する」に少し書いたように、特別なサーバを選出し、これをリーダーと呼ぶ。リーダーに従うその他のサーバをフォロワーと呼ぶ。リーダーは、ZooKeeperシステムを変更するリクエストを処理する中心となる。リーダーは、シーケンサーとして機能し、ZooKeeper状態の更新の順序を決定する。フォロワーは、状態の更新がクラッシュに耐えることを保証するために、リーダーが提案する更新を受け取り、投票を行う。
リーダーとフォロワーは、クラッシュが起きた場合でも状態更新の順序を保証するための核となる。第3種のサーバとしてオブザーバーというものがある。オブザーバーは、どのリクエストを適用するべきかを決定する過程には関与せず、決定したことを知るだけである。オブザーバーはスケーラビリティのためにのみ存在する。
本章では、ZooKeeperアンサンブルの実装で用いられているプロトコルと、サーバとクライアントの内部構造を説明する。まず、本章全体で用いられているクライアントリクエストとトランザクションに関する、一般的な概念について説明する。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access