ZooKeeper チュートリアル: とは ArchiApache ZooKeeper の構造
分散システムとは何ですか?
分散アプリケーションは、ネットワーク内の複数のシステムで実行できるアプリケーションです。特定のタスクを完了するために、相互に調整しながら同時に実行されます。これらのタスクは、非分散アプリケーションでは完了までに何時間もかかる場合があります。
ズーキーパーとは何ですか?
ApacheZookeeper は、大規模なホストの管理に役立つオープンソースの分散調整サービスです。 分散環境での管理と調整は困難です。 Zookeeper はこのプロセスを自動化し、開発者がソフトウェア機能の分散性を気にすることなく、ソフトウェア機能の構築に集中できるようにします。
Zookeeper は、分散アプリケーションの構成情報、命名、グループ サービスの管理に役立ちます。アプリケーションが独自に実装する必要がないように、クラスターにさまざまなプロトコルを実装します。複数のマシンの一貫した単一のビューを提供します。
Apache Zookeeper を選ぶ理由
Zookeeper の人気の背後にある重要な理由は次のとおりです。
- サーバープロセス間の相互排除と連携を可能にする
- これにより、アプリケーションが一貫して実行されることが保証されます。
- トランザクションプロセスが部分的に完了することはありません。 成功または失敗のステータスが与えられます。 分散状態は維持できるが、それは決して間違ったことではない
- 接続先のサーバーに関係なく、クライアントはサービスの同じビューを表示できます。
- 特定のルールセットに従ってデータをエンコードするのに役立ちます
- ファイルやディレクトリと同様の標準的な階層型名前空間を維持するのに役立ちます
- ローカルまたは地理的に接続できる単一システムとして実行されるコンピューター
- クラスタ内のノードの参加/離脱やノードのステータスをリアルタイムで確認できる
- より多くのマシンをデプロイすることでパフォーマンスを向上させることができます
- ノードをリーダーとして選択して、より適切な調整を行うことができます。
- ZooKeeper は、データの書き込みよりも読み取りの方が一般的なワークロードで高速に動作します。
飼育係 Archi構造: どのように機能するのですか?
についての簡単な説明は次のとおりです アパッチ Zookeeper アーキテクチャ:
- Zookeeper はクライアントサーバーをフォローします Archi構造
- すべてのシステムはデータのコピーを保存します
- リーダーはスタートアップ時に選出される
サーバー: サーバーは、クライアントが接続すると確認応答を送信します。 接続したサーバーから応答がない場合、クライアントはメッセージを別のサーバーに自動的にリダイレクトします。
クライアント: クライアントは、分散アプリケーション クラスター内のノードの 1 つです。サーバーからの情報にアクセスするのに役立ちます。すべてのクライアントは、サーバーがクライアントがアクティブであることを認識できるように、一定の間隔でサーバーにメッセージを送信します。
首脳名: サーバーの XNUMX つがリーダーに指定されます。 すべての情報をクライアントに提供するとともに、サーバーが稼動していることを確認します。 接続されているノードのいずれかに障害が発生した場合は、自動回復が実行されます。
フォロワー: リーダーの指示に従うサーバーノードをフォロワーと呼びます。
- クライアントの読み取りリクエストは、対応して接続された Zookeeper サーバーによって処理されます。
- クライアントの書き込みリクエストは、Zookeeper リーダーによって処理されます。
アンサンブル/Cluster: アンサンブルまたはアンサンブルと呼ばれる Zookeeper サーバーのグループ ClusterApache を実行しているときにシステムを最適な値に保つために、クラスター モードで ZooKeeper インフラストラクチャを使用できます。
ZooKeeper WebUI: ZooKeeper リソース管理を使用する場合は、次を使用する必要があります。 WebUIの。 コマンド ラインを使用する代わりに、Web ユーザー インターフェイスを使用して ZooKeeper を操作できるようになります。 ZooKeeper アプリケーションとの高速かつ効果的な通信を提供します。
Zookeeper データ モデル (ZDM)
この ZooKeeper チュートリアルでは、Zookeeper データ モデルについて学びましょう。 以下の図は、Apache Zookeeper データ モデルを説明しています。
- Zookeeper データ モデルは階層型名前空間に従っており、各ノードは ZNode と呼ばれます。ノードはクラスターが実行されるシステムです。
- すべての ZNode にはデータがあります。 子供がいるかもしれないし、いないかもしれない
- ZNode パス:
- 正規、スラッシュ区切り、絶対
- 相対参照は使用しないでください
- 名前には Unicode 文字が含まれる場合があります
- ZNode は、データ変更の統計構造とバージョン番号を維持します。
Zookeeper ノードの種類
Znode には XNUMX つのタイプがあります。
固執 znode: このタイプの znode は、その特定の znode を作成したクライアントが切断された後でも生き続けます。 デフォルトでは、zookeeper では、指定されていない場合、すべてのノードが永続的になります。
エフェメラル znode: このタイプの動物園管理者 znode は、クライアントが生きているまで生き続けます。 したがって、クライアントが飼育員から切断されると、クライアントも削除されます。 さらに、一時ノードは子を持つことを許可されません。
シーケンシャル znode: 順次 znode は一時的または永続的のいずれかになります。 したがって、新しい znode が順次 znode として作成されるとき。 元の名前に 10 桁のシーケンス番号を付加することで、znode のパスを割り当てることができます。
ZDM- 時計
Zookeeper のウォッチ イベントは、ウォッチを設定したクライアントに送信される 1 回限りのトリガーです。これは、そのウォッチのデータが変更されたときに発生します。ZDM ウォッチを使用すると、znode が変更されたときにクライアントが通知を受け取ることができます。getData()、getChidleren() などの ZDM 読み取り操作には、ウォッチを設定するオプションがあります。
監視は順序付けされており、監視イベントの順序は更新の順序に対応します。 クライアントは、znode に対応する新しいデータを確認する前に、znode の監視イベントを確認できます。
ZDM - アクセス制御リスト
Zookeeper は ACL を使用して znode へのアクセスを制御します。 ACLは(スキーム:id、パーミッション)のペアで構成されます。
ACL スキームを組み込む:
world: 単一の ID を持ち、誰でも
auth: ID は使用しません。認証されたユーザーを表します。
ダイジェスト: ユーザー名を使用します: パスワード
host: クライアントのホスト名を ACL ID として使用できるようにします。
IP: クライアント ホストの IP アドレスを ACL ID として使用します
ACL 権限:
- CREATE
- お客様の声は
- レビューを
- DELETE
- 管理人
例 (IP: 192.168.0.0/16、読み取り)
ZKS – セッションの状態と存続期間
- リクエストを実行する前に、クライアントがサービスとのセッションを確立することが重要です。
- クライアントがサービスに送信されるすべての操作は、自動的にセッションに関連付けられます。
- クライアントはクラスタ内のどのサーバーにも接続できます。ただし、接続できるのは1つのサーバーのみです。
- セッションは「順序保証」を提供します。 セッション内のリクエストはFIFO順に実行されます
- セッションの主な状態は、1) 接続中、2) 接続中、3) 終了、4) 未接続です。
ZooKeeperのインストール方法
ステップ1) 「購読を続ける」をクリックします
これに行く そして「購読を続ける」をクリックしてください
ステップ2) 利用規約に同意する
次のページで、ライセンス契約に同意します
ステップ3) ありがとうメッセージが表示されました
次のメッセージが表示されます
ステップ4) 「続行して構成」をクリックします
5 分後にページを更新し、構成に進みます
ステップ5) 「起動を続ける」をクリックします
次の画面で、ZooKeeper を起動します
ステップ6) おめでとう!
あなたは終わった!
Apache ZooKeeper アプリケーション
Apache Zookeeper は次の目的で使用されます。
- 構成の管理
- ネーミングサービス
- リーダーの選択
- メッセージをキューに入れる
- 通知システムの管理
- Sync神化
- 分散 Cluster マネジメント
Zookeeper を使用している企業
- Yahoo
- オークション
- Netflix
- Zynga
- ヌタニクス
Zookeeper を使用するデメリット
- 新しい Zookeeper サーバーを追加すると、データ損失が発生する可能性があります
- ユーザーの移行は許可されていません
- ラックの配置と認識のサポートは提供しません
- Zookeeper では、偶発的なデータ損失を防ぐためにポッドの数を減らすことはできません
- サービスが仮想ネットワーク上に展開されている場合、完全な再インストールを行わずにサービスをホストネットワークに切り替えることはできません。
- サービスは、初期展開が終了した後のボリューム要件の変更をサポートしていません
- 多数のノードが関係しているため、障害点が複数存在する可能性がある
- メッセージは通信ネットワークで失われる可能性があり、再度復元するには特別なソフトウェアが必要です
まとめ
- 分散アプリケーションは、ネットワーク内の複数のシステム上で実行できるアプリケーションです。
- Apache Zookeeper は、大規模なホストの管理を支援するオープンソースの分散調整サービスです。
- サーバープロセス間の相互排除と連携を可能にする
- サーバー、クライアント、リーダー、フォロワー、アンサンブル/Cluster、ZooKeeper WebUI は、Zookeeper の重要なコンポーネントです
- XNUMX 種類の Znode は、永続性、一時的、シーケンシャルです。
- ZDM 監視は、監視を設定したクライアントに送信される XNUMX 回限りのトリガーです。 その時計のデータが変更されたときに発生しました
- Zookeeper Hadoop は ACL を使用して znode へのアクセスを制御します
- 設定の管理、サービスのネーミング、リーダーの選択、メッセージのキューイング、通知システムの管理、 Sync王権化、分散 Cluster 経営など
- ヤフー、フェイスブック、イーベイ、ツイッター、 Netflix Zookeeper を使用している有名な企業はいくつかあります
- このツールの主な欠点は、新しい Zookeeper サーバーを追加する場合に損失が発生する可能性があることです。