CAP
理論は分散型です。システム 面接中に面接官が CAP 理論の原理について直接質問することはありませんが、面接中に遭遇した分散システム設計の問題は、CAP の理解と思考を無視することはできません。
そして、面接中、面接官の要件は、異なるポジションで面接する候補者ごとに異なり、回答の深さも異なります。そこで今日の記事では、若手および中級の研究開発エンジニアと上級研究開発エンジニアの 2 つの異なる観点から面接のアイデアを分析します。
分散テクノロジーに関する関連知識を勉強していれば、CAP 理論が何を指すのかは基本的に理解できると思います。に: ## #
Consistency
) はデータの一貫性、) はサービスの可用性、
) はパーティション許容値です。
CP モデルを選択します。
#Picture
PACELC
今回は、CAP理論を拡張したBASE
理論を導入します。 BASE
は、Basically Available
(基本的に利用可能)、Soft State
(ソフト状態)、および Eventually Consistent
(結果整合性) の 3 つの単語です。これは、システムの可用性を確保し、強整合性を最終整合性に置き換えることを意味します。これは、現在の分散システム設計における最も有益な経験の要約です。では、実際のプロジェクトで設計実践を導くために、BASE 理論をどのように使用すればよいでしょうか?
BASE で基本的に利用可能とは、コア機能の基本的な可用性を確保することを指します。実際には、次のような「可用性
」における妥協です:
E コマースダブルイレブン プロモーションなど、アクセスが集中している Web サイトでは、主要な商品取引プロセスの可用性を確保するために、商品ランキングなどの二次機能の表示をオフにします。これは、よくサービス ダウングレードと呼ばれるものでもあります。
ダブルイレブンのピーク期間中、電子商取引ウェブサイトは、トラフィックのピークを削減するために、先行販売商品の支払い時間を10分から20分遅らせます;
急いでいるとき商品を購入するために、多くの場合、キューに並んで待つことになります。処理。遅延キューとしてもよく使用されます。
ソフト ステートと最終的な整合性とは、システム内のデータが中間状態で存在できるようにすることを指します。これは、システムの可用性を確保するために一定期間内のデータの整合性を犠牲にして、最終的なデータの整合性を確保する手法でもあります。
現在、このデータ処理方法はインターネットの標準的な設計パターンになっています。最も典型的な例は、ユーザーが注文するときに実際に在庫を差し引く必要はなく、在庫を差し引くだけです。フロントで数をカウントし、非同期タスクによりバックグラウンドでバッチ処理します。
初級および中級の研究開発エンジニアに応募したい場合は、理論的な理解から実装まで、上記の考え方と組み合わせることで、CAP 理論
についてより明確に答えることができます。質問に答えるロジックは、私が提供した提案を参照できます:
上級研究開発エンジニアまたはアーキテクトに応募する場合は、回答する際に、自分の知識体系と技術的判断力を可能な限り実証する必要があります。これらは、これら 2 つのポジションの基本的な資質です。分散技術は複雑であり、さまざまな技術が相互に結合しているため、面接では、CAP理論の知識ポイントを通じて明確な分散コア技術知識体系を拡張できれば、他の人とは差別化できるでしょう。
##分散システムはコンピューターに似ています。コンピュータには 5 つの主要なアーキテクチャ (つまり、フォン ノイマン アーキテクチャ) が含まれます。これには 5 つの主要なコンポーネントがあります:
、その中で最も重要なものはコンピューティングとストレージです。コンピューティングとストレージは一連のネットワーク ノードで構成され、各ノード間の通信は入出力であり、各ノード間のスケジューリング管理はコントローラーです。 #分散アーキテクチャ技術構成
この観点から見ると、分散システムはネットワーク コンピュータに似ており、その知識体系には次の 4 つの観点が含まれます。 # メモリ、つまり NoSQL データベース ストレージなどの分散ストレージ システム、
それでは、問題の具体的な解決策は何でしょうか? 「Redis を分散ロックとして使用できるか」を例として、問題の背後に隠された分散理論的知識と上級 R&D エンジニアの問題解決アイデアを分析してみましょう。
通常、setnx メソッドを使用して、Redis 経由でロックとタイムアウトを実装します。ロックの有効期限を制御します。ただし、極端な場合には、Reids マスター ノードがハングアップしたが、ロックがスレーブ ノードに同期されていない場合、センチネル メカニズムに従って、スレーブがマスターになり、サービスを提供し続けます。このとき、別のスレッドが再度ロックを要求することができ、この時点で 2 つのスレッドがロックを取得します。
CAP 理論の理解によれば、Redis の設計モデルは AP モデルであり、分散ロックです。が CP シナリオである場合、Redis の AP モデル アーキテクチャを CP シナリオに適用することは、基盤となるテクノロジーの選択という点で間違っていることは明らかです。
Redis は分散ストレージ システムであるため、分散ストレージ システムの分野に関する知識が必要です。マインドシステム。データ ストレージ、データ分散、データ レプリケーション、データ整合性がどのように実装されているか、それらを実現するためにどのようなテクノロジが使用されているか、およびそのようなテクノロジやアルゴリズムの選択がなぜ必要なのかを考えてください。同じ分散問題に対して、さまざまな手法を多面的かつ多角的に比較分析することを学び、さまざまな手法の長所と短所を総合的に比較検討し、最終的には自分自身の技術的認識と技術的判断を形成する必要があります。
たとえば、Redis を通じて、分散キャッシュ システムの現在の開発状況と技術的な実装について考えることができます。 「Redis」を作成する場合、どのような問題を考慮しますか、など。実際の業務で「車輪の発明」を繰り返すことは推奨されませんが、面接では「車輪の発明」ができる能力をアピールする必要があります。
CAP理論は単純に見えますが、面接ではその理解の深さが分散に対する理解度を反映する可能性があります 全体的な理解そしてシステムの制御能力。
したがって、面接中のケースで CAP 原則の質問に答える方法をマスターするだけでなく、質問に答えるためのアイデアもマスターする必要があります。将来、同様の理論的知識の試験に遭遇したときに、次のことができます。 3段階からお答えします。
以上がMeituan インタビュー: CAP について話しましょう。私の答え方は非常に特殊ですの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。