優れたプログラマー Java チュートリアルの ZooKeeper インタビューの質問が整理され、要約されています。流行の改善により、主要企業はリモートインタビューの形で人材を採用し始め、 Java 業界は依然として最も需要がありますが、採用要件は大幅に改善されました。 。面接に合格できないことを心配する学生もいますが、実力をつけて上手いのであれば給与の高さは問題になりません。次に優れたプログラマーである Java 雇用ガイダンス編集者は、ZooKeeperに関連するインタビューの質問を共有します。
ZooKeeper とは何ですか?
ZooKeeper はオープンソースの分散調整サービスであり、クラスターの管理者であり、クラスター内の各ノードのステータスを監視し、ノードから送信されたフィードバックに基づいて次の適切な操作を実行します。結局、ユーザーには使いやすいインターフェースと高性能で安定した機能を備えたシステムが提供されます。
分散アプリケーションは、データ公開/ サブスクリプション、ロードバランシング、ネーミングサービス、分散調整/ 通知、クラスター管理、マスター選定、分散ロック、 Zookeeperに基づく分散キューなどの機能を実装できます。Zookeeper は、分散一貫性機能を保証します:逐次一貫性、原子性、単一ビュー、信頼性、リアルタイム(最終的な一貫性)。
ZooKeeper 負荷分散とnginx 負荷分散の違い
ZooKeeper
1)単一点の問題はありません。zab メカニズムにより、単一障害点がリーダーを再選できることが保証されます。
2)サービスの登録と検出のみを担当し、転送は担当せず、1つのデータ交換を削減します(消費者とサーバーが直接通信します)。
3)対応する負荷分散アルゴリズムを自分で実装する必要があります。
nginx
1))シングルポイントの問題があり、シングルポイントの負荷が高く、データの量が多い。KeepAlived + LVS バックアップマシンで高可用性を実現する必要があります。
2)各負荷は、中継転送の役割として機能し、ネットワーク負荷を増加させます(消費者とサーバーの間接通信)。
3)負荷分散アルゴリズムが付属しています。
Zookeeper Watcher メカニズム- データ変更通知
飼育係は、サーバー側にクライアントできますのznode 登録ウォッチャー一部の指定されたイベント・サーバーが発生したときに聞くウォッチャーが、その後、かかるクライアント、サーバが分散通知を達成するために指定されたクライアントにイベント通知を送信するウォッチャーを通知ステータスとイベントタイプはビジネスに変化をもたらします。
働くメカニズム:
クライアント登録ウォッチャー
サーバーはウォッチャーを処理します
クライアントコールバックウォッチャー
ZooKeeper はトランザクションの順序の一貫性をどのように保証しますか?
ZooKeeperのは、グローバル増分トランザクション使用Idが同定され、すべての提案(提案する)際に添加することが提案されているzxidは、zxidが実際には64 、高いビット数が32 ビットである(エポック期間、時代、世界; 新しい時代)はリーダーサイクルを識別するために使用されます。新しいリーダーが生成されると、エポックが自動的に増加し、下位32 ビットを使用してカウントが増分されます。新しいプロポーザルが生成されると、データベースの2段階のプロセスに従って他のサーバーにトランザクション実行リクエストを発行します。マシンの半分以上が実行でき、成功できる場合は、実行を開始します。
飼育係のノードのペアを見て、それが永続的であるモニター通知を?
いや 公式声明: Watch イベントは1回限りのトリガーであり、Watch のデータが変更されると、サーバーはWatch のクライアントに変更を送信して通知します。
永続的ではないのはなぜですか?たとえば、サーバーが頻繁に変更され、多くの場合、リッスンしているクライアントが変更されると、すべてのクライアントに変更が通知され、ネットワークとサーバーに大きな負荷がかかります。
通常、クライアントは getData( "/ node A"、true)を実行します。ノードA が変更または削除された場合、クライアントは監視イベントを取得しますが、ノードA が変更された後、クライアントは設定していません監視イベントはクライアントに送信されなくなりました。
実際のアプリケーションでは、多くの場合、クライアントはサーバーのすべての変更を知る必要はなく、最新のデータのみが必要です。
ZK ノードのダウンタイムに対処するにはどうすればよいですか?
Zookeeper 自体もクラスターです。3 台以上のサーバーを構成することをお勧めします。Zookeeper は、1つのノードがダウンしても、他のノードが引き続きサービスを提供するようにする必要があります。
フォロワーがダウンしている 場合、アクセスを提供する2つのサーバーがあります。Zookeeper にはデータの複数のコピーがあるため、データは失われません。
リーダーがダウンした 場合、Zookeeper は新しいリーダーを選出します。
ZK クラスターのメカニズムは、ノードの半分以上が正常である限り、クラスターがサービスを正常に提供できることです。のみZK ノードが多すぎる、唯一の半分以下のノードの半分は仕事ができるよりも、ハング、唯一のクラスタが失敗します。
だから:
3 ノードのクラスターは1 ノードをハングさせることができます(リーダーは2 票> 1.5)。
2つのノードクラスタは、任意のハングアップすることができない1 ノード(リーダーとすることができるチケット<= 1) 。