ホームページ  >  記事  >  Java  >  Meituan インタビュー: CAP について話しましょう。私の答え方は非常に特殊です

Meituan インタビュー: CAP について話しましょう。私の答え方は非常に特殊です

Java后端技术全栈
Java后端技术全栈転載
2023-08-24 15:11:52692ブラウズ


事例の背景

CAP 理論は分散型です。システム 面接中に面接官が CAP 理論の原理について直接質問することはありませんが、面接中に遭遇した分散システム設計の問題は、CAP の理解と思考を無視することはできません。

そして、面接中、面接官の要件は、異なるポジションで面接する候補者ごとに異なり、回答の深さも異なります。そこで今日の記事では、若手および中級の研究開発エンジニアと上級研究開発エンジニアの 2 つの異なる観点から面接のアイデアを分析します。

事例分析

分散テクノロジーに関する関連知識を勉強していれば、CAP 理論が何を指すのかは基本的に理解できると思います。に: ## #

  • C (Consistency) はデータの一貫性、
  • ##A (
    Availability) はサービスの可用性、
  • P (
    パーティション許容値) はパーティション許容値です。
C、A、P は同時に 2 つの目標しか達成できません。P は分散システムに保持する必要があるため、C と A の間でトレードオフを行う必要があります。 。サービスの可用性を確保したい場合は AP モデルを選択し、一貫性を確保したい場合は

CP モデルを選択します。

多くの候補者は、面接での質問 (「データの災害復旧のために、データのマスター/スレーブ バックアップを実行します。そのため、マスター/スレーブ ノードのデータの整合性は呼び出し側にどのような影響を及ぼしますか?)」と考えています。 「CAP についての理解と考え方」に関して、あなたは無意識のうちに同様の答えをするでしょう。「CAP 理論では、ネットワーク分断が発生した場合の C と A の選択について記述されているため、発信側の観点に影響を与えます。システムは利用できません。」私だったら、おそらく合格点を与えるだろうし、そのような答えは、あなたに能力があるということではなく、準備ができていることを証明するだけだと思います。

面接で理論的な問題に遭遇したとき、表面的な概念的説明をするだけでは面接官に技術的な能力を証明するのは難しいからです。面接官は、あなたが分散システムに慣れていない、または分散システムについて深く理解していない開発者であると考えるでしょう。これが面接での最初の質問である場合、それは面接官のあなた、さらにはあなた自身に対する第一印象に直接影響を与えます。の評価。

私の経験に基づくと、より適切に答えたい場合は、まず CAP の原則、実務経験、技術知識を習得し、次に特定の面接の質問に基づいて分析する必要があります。

質問の回答

原理の理解

現在、分散システム A があり、これにはコピー A1 があります。通常、この場合、クライアントはシステム A にデータを書き込み、データはノード A からノード A1 に同期され、成功ステータスをクライアントに返します。

Meituan インタビュー: CAP について話しましょう。私の答え方は非常に特殊です#Picture
この時点で、クライアントは任意のノード A または A1 からデータを読み取り、最後に書き込まれたデータを読み取ることができます。これは、A および A1 のデータを示しています。は一貫しており、A と A1 の両方が使用可能です。

しかし、ネットワークの信頼性が低いため、ノード A と A1 のネットワークは、中断によりいつでも分割される可能性があります。いわゆるネットワーク分割とは、ネットワーク障害によりノード A と A1 が異なるネットワーク サブセットに分離されることを意味しますが、このときノード A のデータはノード A1 に適時に同期できません。

Meituan インタビュー: CAP について話しましょう。私の答え方は非常に特殊です写真
分散システムでは、ネットワークの問題によるネットワークの分断が一般的です。つまり、ネットワークの分断が発生した場合、CAP 理論によれば、システムの可用性を確保するか、データの一貫性を確保するかのどちらかを A と C の間でトレードオフする必要があります。

ここで注意していただきたいのが、上記の例ではシステム内でネットワーク分断が発生しているという大前提がありますが、実際にはネットワーク分断が存在しないことがほとんどです(ネットワーク分断は存在しません)。問題はほとんどありません))。それでは、やはり 3 つのうち 2 つ (CP または AP) を選択する必要があるのでしょうか?

実際には、さまざまな分散システムは、ビジネス シナリオとビジネス ニーズに基づいて 3 つの CAP の間で比較検討する必要があります。 CAP 理論は、絶対的な選択を行うのではなく、システム設計時に測定する必要がある要素をガイドするために使用されます。

ネットワークに分割がない場合、CAP 理論では A と C を測定するための要素は与えられませんが、実際の分散システム設計を行ったことがある場合は、システム データ同期のレイテンシ (レイテンシ) が確実にわかります。 )、つまり、この例では、ノード A がノード A1 にデータを同期するのにかかる時間が、A と C を測定する際の最も重要な要素になります。この時点では、絶対的な AP モデルや CP モデルは存在しません。実際のビジネスシナリオを総合的に考慮。

したがって、元の CAP 理論を最適化するための PACELC "Reference1" などの新しいモデルが登場し、理論が実践を導き、実践が理論を最適化します。

PACELC モデルの定義によれば、ネットワーク分割が発生した場合、システムは A と C の間でバランスを取る必要があります。それ以外の場合 (そうでない場合は、PACELC の E)、システムがネットワーク分割なしで動作する場合、システムは、L (レイテンシ) と C の間でバランスをとる必要があります。

PACELCMeituan インタビュー: CAP について話しましょう。私の答え方は非常に特殊です

しかし、このレベルまで理解するだけでは十分ではなく、実装経験によってそれを証明する必要もあります。

実践経験

インターネットの分散設計は、データの一貫性とシステムの可用性の間のトレードオフであり、どちらか一方ではないことを認識する必要があり、これは特に重要です。したがって、たとえ強整合性が達成できない場合でも (簡単に言うと、強整合性とは、すべてのユーザーがクエリするデータがいつでも最新であることを意味します)、自社のビジネス特性に応じて適切な方法を使用して、システムを最終的な整合性を達成することができます。一貫性、セックス。

今回は、CAP理論を拡張したBASE理論を導入します。 BASE は、Basically Available (基本的に利用可能)、Soft State (ソフト状態)、および Eventually Consistent (結果整合性) の 3 つの単語です。これは、システムの可用性を確保し、強整合性を最終整合性に置き換えることを意味します。これは、現在の分散システム設計における最も有益な経験の要約です。では、実際のプロジェクトで設計実践を導くために、BASE 理論をどのように使用すればよいでしょうか?

BASE で基本的に利用可能とは、コア機能の基本的な可用性を確保することを指します。実際には、次のような「可用性 」における妥協です:

E コマースダブルイレブン プロモーションなど、アクセスが集中している Web サイトでは、主要な商品取引プロセスの可用性を確保するために、商品ランキングなどの二次機能の表示をオフにします。これは、よくサービス ダウングレードと呼ばれるものでもあります。

ダブルイレブンのピーク期間中、電子商取引ウェブサイトは、トラフィックのピークを削減するために、先行販売商品の支払い時間を10分から20分遅らせます;

急いでいるとき商品を購入するために、多くの場合、キューに並んで待つことになります。処理。遅延キューとしてもよく使用されます。

ソフト ステートと最終的な整合性とは、システム内のデータが中間状態で存在できるようにすることを指します。これは、システムの可用性を確保するために一定期間内のデータの整合性を犠牲にして、最終的なデータの整合性を確保する手法でもあります。

現在、このデータ処理方法はインターネットの標準的な設計パターンになっています。最も典型的な例は、ユーザーが注文するときに実際に在庫を差し引く必要はなく、在庫を差し引くだけです。フロントで数をカウントし、非同期タスクによりバックグラウンドでバッチ処理します。

初級および中級の研究開発エンジニアに応募したい場合は、理論的な理解から実装まで、上記の考え方と組み合わせることで、CAP 理論 についてより明確に答えることができます。質問に答えるロジックは、私が提供した提案を参照できます:

  • まず、概念だけを考えるのではなく、理論原理を十分に理解してください。
  • 次に、独自の考え方を持ち、違いを示す必要があります。あなたの思考能力;
  • 次に、理論と実践を組み合わせて、実際に問題に対処するときの思考ロジックについて話し合います。

技術的認識

上級研究開発エンジニアまたはアーキテクトに応募する場合は、回答する際に、自分の知識体系と技術的判断力を可能な限り実証する必要があります。これらは、これら 2 つのポジションの基本的な資質です。分散技術は複雑であり、さまざまな技術が相互に結合しているため、面接では、CAP理論の知識ポイントを通じて明確な分散コア技術知識体系を拡張できれば、他の人とは差別化できるでしょう。

##分散システムはコンピューターに似ています。コンピュータには 5 つの主要なアーキテクチャ (つまり、

フォン ノイマン アーキテクチャ) が含まれます。これには 5 つの主要なコンポーネントがあります:

    #Controller
  • Operator
  • Memory
  • 入力
  • 出力
  • 次のように理解できます。分散システムには、これらの
5 つも含まれます。主要コンポーネント

、その中で最も重要なものはコンピューティングとストレージです。コンピューティングとストレージは一連のネットワーク ノードで構成され、各ノード間の通信は入出力であり、各ノード間のスケジューリング管理はコントローラーです。 #分散アーキテクチャ技術構成

この観点から見ると、分散システムはネットワーク コンピュータに似ており、その知識体系には次の 4 つの観点が含まれます。 Meituan インタビュー: CAP について話しましょう。私の答え方は非常に特殊です# メモリ、つまり NoSQL データベース ストレージなどの分散ストレージ システム、

# オペレータ、つまり、分散並列コンピューティングなどの分散コンピューティング、
  • 入力と出力、つまり、同期 RPC 呼び出しや非同期メッセージ キューなどの分散システム通信、
  • ##コントローラー、つまり、次のようなスケジュール管理トラフィック スケジューリング、タスク スケジューリング、リソース スケジューリング。
  • 分散システムの知識体系は、次の 4 つの観点から要約できます。

    それでは、問題の具体的な解決策は何でしょうか? 「Redis を分散ロックとして使用できるか」を例として、問題の背後に隠された分散理論的知識と上級 R&D エンジニアの問題解決アイデアを分析してみましょう。

    問題解決のアイデア

    • 実際の問題の説明

    通常、setnx メソッドを使用して、Redis 経由でロックとタイムアウトを実装します。ロックの有効期限を制御します。ただし、極端な場合には、Reids マスター ノードがハングアップしたが、ロックがスレーブ ノードに同期されていない場合、センチネル メカニズムに従って、スレーブがマスターになり、サービスを提供し続けます。このとき、別のスレッドが再度ロックを要求することができ、この時点で 2 つのスレッドがロックを取得します。

    • 回帰理論からのガイダンス

    CAP 理論の理解によれば、Redis の設計モデルは AP モデルであり、分散ロックです。が CP シナリオである場合、Redis の AP モデル アーキテクチャを CP シナリオに適用することは、基盤となるテクノロジーの選択という点で間違っていることは明らかです。

    • ナレッジ システムへの拡張

    Redis は分散ストレージ システムであるため、分散ストレージ システムの分野に関する知識が必要です。マインドシステム。データ ストレージ、データ分散、データ レプリケーション、データ整合性がどのように実装されているか、それらを実現するためにどのようなテクノロジが使用されているか、およびそのようなテクノロジやアルゴリズムの選択がなぜ必要なのかを考えてください。同じ分散問題に対して、さまざまな手法を多面的かつ多角的に比較分析することを学び、さまざまな手法の長所と短所を総合的に比較検討し、最終的には自分自身の技術的認識と技術的判断を形成する必要があります。

    • 技術的判断

    たとえば、Redis を通じて、分散キャッシュ システムの現在の開発状況と技術的な実装について考えることができます。 「Redis」を作成する場合、どのような問題を考慮しますか、など。実際の業務で「車輪の発明」を繰り返すことは推奨されませんが、面接では「車輪の発明」ができる能力をアピールする必要があります。

    まとめ

    CAP理論は単純に見えますが、面接ではその理解の深さが分散に対する理解度を反映する可能性があります 全体的な理解そしてシステムの制御能力。

    したがって、面接中のケースで CAP 原則の質問に答える方法をマスターするだけでなく、質問に答えるためのアイデアもマスターする必要があります。将来、同様の理論的知識の試験に遭遇したときに、次のことができます。 3段階からお答えします。

以上がMeituan インタビュー: CAP について話しましょう。私の答え方は非常に特殊ですの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はJava后端技术全栈で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。