インタビュー中にこの記事を読むようZookeeperに依頼するだけで十分です

1. Zookeeperとは何ですか?

ZKはJava言語に基づくオープンソースの分散調整ツールであるため、ZKを使用する前にJDKをインストールする必要があります。これは、分散ロック、登録センター、およびイベント通知に使用できます。これは、ファイルシステムのツリーのようなディレクトリ構造に似ており、定義されたノードパスは一意です。

2. Zookeeperのアプリケーションシナリオは何ですか?

1.分散ロック(redisまたはzk)
2.登録センター(Dubbo +
zk 3.分散構成センターdisconfig
4.分散メッセージングミドルウェア
5.パブリッシュおよびサブスクライブ(イベント通知)
6.マスター選挙

3. Zookeeperはどのように分散ロックを実装しますか?

Zkは、分散ロックの概念を実装しています。ノードは一意のまま、イベント通知、一時ノード(ライフサイクルとセッションセッションの関連付け)です
。Zookeeperノードパスは一意のままであるため、複製は許可されず、一時的なノード特性があります。現在のノードは、接続が閉じた後、自動的に非表示になるため、分散ロック。
実装の原則:
1.ロックを取得できる成功したユーザーを作成できる限り、複数のリクエストが同時に同じノード(lockPath)を作成します
。2。ノードが作成された場合、突然他のリクエストによってノードが作成され、直接待機します
。3 。ノードが正常に作成できる限り、ノードは通常のビジネスロジック操作に入り、もう一方はロックを取得して待機しません
。4。通常のビジネスロジックプロセスが実行された後、zkを呼び出して接続を閉じ、ロックを解除し、他のノードに通知して、他のリクエストを通知します。ロックを取得するリソースを入力し始めます。

4. ZookeeperとEurekaの違いは何ですか?

飼育係 ユーレカ
登録センターになれますか よし よし
CAP理論 CP、データの整合性を確保する サービスの可用性を確保するAP
デザイン思考 一元化された思考 分散的思考
データの一貫性を確保する方法 Zab Atomic Broadcast Protocol ピアツーピアモードはデータレプリケーションに使用されます。相互循環レプリケーションを防ぐために、URLでパラメーターを渡す方法を使用して、通常のリクエストとレプリケーションリクエストを区別します。レプリケーションリクエストを受け入れるユーザーはお互いにレプリケーションリクエストを送信できなくなり、循環レプリケーションの問題が解決されます。バージョン番号を使用して古いデータが新しいデータにコピーされないようにし、ハートビートメカニズムを使用してデータを修復します
ノードがダウンしているかどうかを確認する方法 ハートビート? ハートビートがアクティブでない場合は削除され、ネットワーク上の理由でダウンしていると判断される可能性があります。そのため、自己保護メカニズムを使用すると、短時間で失われた多数のハートビートが自己保護メカニズムを開き、一時的に削除されなくなります。ネットワーク障害が回復すると、自己保護メカニズムは終了します。クライアントにはキャッシュ登録リストもあり、ネットワークの問題によりすべてのユーレカにアクセスできない場合、ユーレカにノードがある限り、サービス登録センター全体を使用できます。

第5に、分散ロックを実装するZookeeperとRedisの違いは何ですか?

飼育係 Redis
分散ロックを実装するアイデア 1.ノード固有2.イベント通知3.一時ノード 1.キー固有2.イベント通知3.一時キー
ロックを取得 同じ一時ノードを同時に作成します。最初に作成した人がロックを取得します setnxコマンドを使用して同じキーを作成し、成功した取得ロックを作成します。作成が失敗した場合は0を返し、成功した場合は1を返します。
ロックを解除する ノードを削除することは、ロックを解放することと同じです。ノードイベントは、他のスレッドにロックの競合の開始を通知します キーを削除することは、ロックを解放することと同じです。このイベントは、他のスレッドにロックの競合の開始を通知します
タイムアウトロック 一時ノードの時間が終了し(セッション)、ロックがタイムアウトし、トランザクションがロールバックされたことを示します キータイムが終了しました。これは、ロックがタイムアウトし、トランザクションがロールバックされたことを示しています

6. Zookeeperの基本的な選挙原則は?データの一貫性を維持するには?

zxidはリーダーであり、zxidはmyidと同じです。myidはそれ自体で設定されます。これは
、データの一貫性を維持するためにZab Atomic Broadcast プロトコルに基づいています。2PC2 フェーズサブミッションプロトコルに似ています
。トランザクション要求を発行する際に、この時間は、私たちは世界的なリーダーノードzxid(トランザクションID、新たな代表zxidの大きいデータ)を作成します
通知期間の最初の段階で2.Leaderノード、すべてのフォロワーzxidにもたらすでしょうノードは確認同期通知を送信します(現時点ではzxid + 1)
3.フォロワーノードの半分以上が同期確認を確認している限り、リーダーはこの時点ですべてのフォロワーにコミットトランザクションデータを送信します;
通知の最初のフェーズが成功した後でzxidが変更されます

7. CAP理論とは何ですか?CAPが3つすべてを処理できないのはなぜですか?

C:データ同期サービスが利用できない場合、データがデータの一貫性に焦点を当てた、間違って行くことができないことを保証するために、強力なデータの一貫性、
A:弱いデータの一貫性を、データがエラーを許可することができ、データ同期サービスが利用可能な場合、汚れが読み込み可能、データは最終的に一貫します、サービスの可用性に注意を払う
P:ネットワークの障害に対応できるネットワークパーティションのフォールトトレランスは、ネットワークの障害によりノードがダウンしていると判断しない

CAPは3つを処理します。つまり、サービスは利用可能で、データは一貫しています。例:マスターノードがデータをスレーブノードに同期する場合、スレーブノードのデータは最新ではありません。スレーブノードにリクエストを送信する場合、返されるデータは古いデータである必要があります。新しいデータであることを確認するには、同期のみが可能です。ステージサービスはご利用いただけません。

8. Zookeeperクラスターノードを奇数にする必要があるのはなぜですか?クラスターの数が3を超えるのはなぜですか?

奇数の理由
1.ノードの残りの数はメカニズムの半分以上を満たす必要があるため、残りのノード>合計ノード/ 2、3つのクラスターおよび4つのクラスターは1つだけダウンすることができ、3つほど良くありません
2、偶数は同じ数の投票を引き起こしやすい

クラスターの数が3つを超える理由:
2つがクラスター化されている場合、1つの障害がメカニズムの半分以上を満たさないため、クラスター化しない方が良い

9. Zookeeperの3つのタイプのノードは何ですか?役割は何ですか?

1.リーダータイプのリーダータイプはリクエストの書き込みを担当し、各ノードと同期します
。2。フォロワータイプのフォロワーはリクエストの読み取りと投票の解決を担当します
3.オブザーバータイプオブザーバーとフォロワーのほとんどの特性は同じですが、唯一の違いは参加できないことです。選挙と投票
注:後期にzkクラスターが拡張された場合、フォローノードタイプを使用しないことをお勧めします。これにより、選挙時間が長くなります。
ObServerタイプを使用する理由
主に元の選挙時間の効率には影響しません。目的は、クライアントクエリの効率を改善することです。
書き込み操作はリーダーに転送されて書き込み、読み取り操作のフォロワーまたはオブザーバーが読み取ります

10. Zabアトミックブロードキャストプロトコル、Paxosプロトコル、2PC / 3PCの違いは何ですか?

11。

12. Zookeeperのスプリットブレイン問題について話してください。それを解決するには?

クラスターの場合、通常は1つのマスターノードのみが選出され、他のノードは地上から快適になります。ネットワークジッターまたは一部のノードが通信できない場合、一部のノードが選出され、選出されます。複数のマスターノード。

メカニズムの半分以上でスプリットブレイン問題を解決します。残りのノードの数が半分を超えており、半分ではありません。リーダーがないか、リーダーが1つだけです

XIII。

14、ACL 4タイプのアクセス許可

1.ワールド:デフォルト、世界中からアクセス可能
2. auth:認証されたユーザーがアクセスできる
3.ダイジェスト:一般的に使用されるユーザー名とパスワードのアクセス
4. ip:指定されたipがアクセスできる

15、4種類のノードがあります。

1.一時的なノード-セッションは自動的に閉じて消えます(zk.close())
2.永続的なノード-ハードディスクに永続的に永続化
3.一時的に順序付けられたノード、自己増分
4、永続的に順序付けされたノード

16の分散ロック実装方法:概念:複数のJVMを解決するために、最後に実行できるJVMは1つだけ

1.データベースに基づく分散ロックの実装2.
Redisに
基づく分散ロックの実装3. Zkに
基づく分散ロックの実装4. redissonフレームワークに基づく分散ロックの実装

17。

18.ユーレカとナコスの違いは何ですか?

19、zabアトミックブロードキャストプロトコルには2つのモードがあります

1.リカバリモード:ノードが初めて起動すると、リーダーが選出され、スレーブノードはリカバリモードに入り、マスターノードのデータを同期します
2.ブロードキャストモード:各ノードのデータ同期の問題を解決します

20.分散データ同期の問題を解決するための2PC 2フェーズサブミッションプロトコル?

2PC 2フェーズコミットプロトコルは、データベースXAメカニズムなどの複数の分散システム間のデータの一貫性を解決するために、分散トランザクションシナリオで使用されます。
複数のサーバーが同時に書き込み、すべてのエラーはロールバックされます

これはグローバルトランザクションID
トランザクションリクエストです。書き込み操作でのみ、トランザクション
Zkボトムレイヤーを使用して、分散トランザクションの問題解決します。これは、2pc 2フェーズコミットプロトコルに似たZabプロトコルです。

21. zxidはどのような状況で矛盾しますか?

同期中に突然ダウンした

22。

二十三

24。

25。

26。

27。

28。

29。

30、

ルートノードでは、ノード名なしで複数の
親ノードを作成することもできます。最初に親ノードを作成してから子ノードを作成する必要あります。そうしないと、エラーが報告されます。

単一のJVMマルチスレッドが同期またはロックロックを使用して注文番号の一貫した問題を
生成する複数のJVMが重複している場合に同時に注文番号を生成する

同期ロックまたはロックロックは、ローカルJVMでのみ有効です。

ZKトランザクションは、2PC 2フェーズ送信プロトコルに基づいてデータの一貫性を維持します。マスターノードがトランザクション要求を処理するとき、マスターノードに例外がない場合、マスターノードは最初にスレーブノードにデータを同期するよう通知するか、マスターノードが最初にトランザクションを送信しますもう?同期するようにスレーブノードに通知する前または後にzxidの増加はありますか?

53件の元の記事を公開 Likes2 Visits 1868

おすすめ

転載: blog.csdn.net/qq_42972645/article/details/104626705