Technology nerd guy: インタビュアーの質問を見る (Java シリーズ)

こんにちは。まず、簡単な自己紹介をさせてください。こんにちは、インタビュアーです。6 年間の実務経験で多くの技術経験を積んでおり、最も身近な技術は Redis と Spring です。得意な技術で会話を始めましょう。

Radis のセンチネル メカニズムは、クラスター監視と分散型高可用性ソリューションを実装し、主にリーダーとフォロワーの状態を監視するために使用されます。リーダーが失敗した場合、リーダーはフォロワーからリーダーを選択し、変更を Radis に渡します。センチネルもダウンしている場合は、センチネルの自動選択がトリガーされ、Radis コンポジション レプリケーションの高可用性が実現されます。Spring Cloud で使用される Nacos 登録センターにも同様の選挙があり、メッセージ キューでは、Kafka の典型的な構成選挙があります。ZooKeeper にはリーダー選出プロセスもあります。これらはすべて、分散システム ソリューションを解決するためのものです。

ECシーンにおいて、seckillシーンは誰もがよく知っているシーンです。このフラッシュ セールのシナリオを開発する場合、多くの課題に遭遇する可能性があります。まず、トラフィックの入り口では、多数のユーザー要求が同時にサーバーに到着する可能性があります。サーバー側では、リクエストの処理に使用されるリソースが限られているため、これらのユーザー リクエストへの同時かつ高速な応答が必要です。したがって、トラフィックがイングレスに入った後、トラフィック制限、権利保護、ロギング、監視などの操作を実行する必要がある場合があります。トラフィックがイングレスに入った後も、トラフィックのクロスオーバー、リソースの分離、サービス エリアの最適化などのいくつかの問題を解決する必要があります。また、従来の負荷分散と動的なイングレスを使用する必要もあります。トラフィックが入り口に入って受信されると、サービスの低下、サービスの調整、リクエストの拒否などの操作を実行する必要がある場合もあります。後で、リクエストがこの部分に到達すると、処理のためにキャッシュを使用する必要が生じる場合があり、分散ロック同期の有無、在庫控除など、いくつかの同時実行モデル シナリオをトリガーする場合があります。

Java 開発では、ほとんどの開発者が開発用のフレームワークを使用します。実際、Spring で開発されているほど、Java で開発されているわけではありません。あなたの紹介によると、Redis はあなたがよりよく知っているテクノロジーでもあります。Redis を使用する場合、最も一般的なエントリ ポイントはウェアラブル VC です。では、あなたの言語で簡単に説明してください。Redis はハッシュ アルゴリズムを介してどのようにデータを管理しますか?

これを理解する前に、ハッシュとは何かという概念を理解する必要があります。ハッシュとは、ハッシュ アルゴリズムを使用して、任意の長さの入力を固定長の出力に実際に変換することです。これは、純粋なデータを使用するため、実装の複雑さが O(1) であるため、利点の 1 つでもあります。次に、配列とリストの形式でデータを格納する Map の基礎となるデータ構造です。データとリストの形式は、実際にはハッシュ衝突の問題を解決するためのものです。同じ値の場合、リストを使用して連結し、各リストにデータを入力します。任意の長さの場合、キーをハッシュし、ハッシュ アルゴリズムを使用して固定出力値を取得できます。次に、それを使用してモジュロを実行できます。モジュラスを取得した後、データ構造は配列とリストであるため、配列の添え字を取得し、それをリストに格納します。リストは実際には、セキュリティ ノードを継承する No ノードの Key-Value 構造です。No ノードのハッシュ、Key-Value、および次の単一テーブルへのポインターを格納します。クエリを作成すると、そのアルゴリズムによって数値の合計が取得され、配列が空の場合は直接挿入されます。空でない場合は、リストをループしてキーが等しいかどうかを確認し、等しい場合はその値を変更し、そうでない場合はキー値をリストの最後に追加する必要があります。

こんにちは。まず、簡単な自己紹介をさせてください。こんにちは、インタビュアーです。6 年間の実務経験で多くの技術経験を積んでおり、最も身近な技術は Redis と Spring です。得意な技術で会話を始めましょう。

Radis のセンチネル メカニズムは、クラスター監視と分散型高可用性ソリューションを実装し、主にリーダーとフォロワーの状態を監視するために使用されます。リーダーが失敗した場合、リーダーはフォロワーからリーダーを選択し、変更を Radis に渡します。センチネルもダウンしている場合は、センチネルの自動選択がトリガーされ、Radis コンポジション レプリケーションの高可用性が実現されます。Spring Cloud で使用される Nacos 登録センターにも同様の選挙があり、メッセージ キューでは、Kafka の典型的な構成選挙があります。ZooKeeper にはリーダー選出プロセスもあります。これらはすべて、分散システム ソリューションを解決するためのものです。

ECシーンにおいて、seckillシーンは誰もがよく知っているシーンです。このフラッシュ セールのシナリオを開発する場合、多くの課題に遭遇する可能性があります。まず、トラフィックの入り口では、多数のユーザー要求が同時にサーバーに到着する可能性があります。サーバー側では、リクエストの処理に使用されるリソースが限られているため、これらのユーザー リクエストへの同時かつ高速な応答が必要です。したがって、トラフィックがイングレスに入った後、トラフィック制限、権利保護、ロギング、監視などの操作を実行する必要がある場合があります。トラフィックがイングレスに入った後も、トラフィックのクロスオーバー、リソースの分離、サービス エリアの最適化などのいくつかの問題を解決する必要があります。また、従来の負荷分散と動的なイングレスを使用する必要もあります。トラフィックが入り口に入って受信されると、サービスの低下、サービスの調整、リクエストの拒否などの操作を実行する必要がある場合もあります。後で、リクエストがこの部分に到達すると、処理のためにキャッシュを使用する必要が生じる場合があり、分散ロック同期の有無、在庫控除など、いくつかの同時実行モデル シナリオをトリガーする場合があります。

Java 開発では、ほとんどの開発者が開発用のフレームワークを使用します。実際、Spring で開発されているほど、Java で開発されているわけではありません。あなたの紹介によると、Redis はあなたがよりよく知っているテクノロジーでもあります。Redis を使用する場合、最も一般的なエントリ ポイントはウェアラブル VC です。では、あなたの言語で簡単に説明してください。Redis はハッシュ アルゴリズムを介してどのようにデータを管理しますか?

これを理解する前に、ハッシュとは何かという概念を理解する必要があります。ハッシュとは、ハッシュ アルゴリズムを使用して、任意の長さの入力を固定長の出力に実際に変換することです。これは、純粋なデータを使用するため、実装の複雑さが O(1) であるため、利点の 1 つでもあります。次に、配列とリストの形式でデータを格納する Map の基礎となるデータ構造です。データとリストの形式は、実際にはハッシュ衝突の問題を解決するためのものです。同じ値の場合、リストを使用して連結し、各リストにデータを入力します。任意の長さの場合、キーをハッシュし、ハッシュ アルゴリズムを使用して固定出力値を取得できます。次に、それを使用してモジュロを実行できます。モジュラスを取得した後、データ構造は配列とリストであるため、配列の添え字を取得し、それをリストに格納します。リストは実際には、セキュリティ ノードを継承する No ノードの Key-Value 構造です。No ノードのハッシュ、Key-Value、および次の単一テーブルへのポインターを格納します。クエリを作成すると、そのアルゴリズムによって数値の合計が取得され、配列が空の場合は直接挿入されます。空でない場合は、リストをループしてキーが等しいかどうかを確認し、等しい場合はその値を変更し、そうでない場合はキー値をリストの最後に追加する必要があります。

Redis の他に、どの分散技術に精通していますか? 分散システムで最も一般的に使用されているテクノロジーの 1 つは分散ロックですが、分散ロックの実装原理を紹介していただけますか?

おすすめ

転載: blog.csdn.net/2301_76992670/article/details/129906602