2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
ZooKeeper は、分散システムの一貫性の問題を解決するために分散システムで広く使用されている、可用性の高い分散調整サービスです。以下では、そのアーキテクチャ、データ モデル、コア メカニズム、一貫性プロトコルなど、ZooKeeper の基礎となる原理を詳細に紹介します。
ZooKeeper はマスター/スレーブ アーキテクチャを採用しており、通常はリーダーと複数のフォロワーで構成され、読み取りリクエストのプレッシャーを共有する非投票ノードとしてオブザーバー ノードもあります。
ZooKeeper はファイル システムに似たツリー構造にデータを格納し、各ノードは znode と呼ばれます。
各クライアントと ZooKeeper クラスターの間にセッションが確立され、接続状態が維持され、一時ノードが管理されます。 ZooKeeper は、ハートビート メカニズムを通じてクライアントの接続ステータスを検出します。一定期間内にハートビートが受信されない場合、セッションは切断されたとみなされます。
各ノードのデータの一貫性を確保するために、ZooKeeper はデータ同期メカニズムを採用しています。 リーダー ノードが書き込みリクエストを処理すると、変更操作がすべてのフォロワー ノードに送信され、フォロワー ノードは変更操作を受け入れた後に確認し、最終的に変更操作が成功したかどうかをリーダー ノードが判断します。
ZooKeeper は Watch メカニズムをサポートしており、クライアントは指定された znode に Watch を登録でき、znode のデータまたは子ノードが変更されると、ZooKeeper はクライアントに通知します。
ZooKeeper は、ZAB (Zookeeper Atomic Broadcast) と呼ばれる一貫性プロトコルを使用してデータの一貫性を確保します。 ZAB は、選挙フェーズとブロードキャスト フェーズの 2 つのフェーズで構成されます。
ZooKeeper クラスターが開始するか、リーダー ノードに障害が発生すると、新しいリーダーを決定するために選挙が必要になります。選挙フェーズは主に次のステップに分かれています。
リーダーが決定されると、ブロードキャスト フェーズに入ります。リーダーは、クライアントの書き込み要求を処理し、変更操作をすべてのフォロワー ノードにブロードキャストする責任を負います。具体的な手順は次のとおりです。
以下は、ZooKeeper を使用した簡単な例で、ノードの作成、ノード データの読み取り、Watch の登録方法を示しています。
存在する pom.xml
ZooKeeper クライアントの依存関係を導入します。
xmlコードをコピーする