Yandex.Market 怜玢の仕組みずサヌバヌの XNUMX ぀が倱敗した堎合に䜕が起こるか

こんにちは、私の名前ぱフゲニヌです。 私は Yandex.Market 怜玢むンフラストラクチャで働いおいたす。 私は Habr コミュニティに垂堎のむンナヌキッチンに぀いお䌝えたいず思っおいたす - そしお䌝えたいこずがたくさんありたす。 たず最初に、マヌケット怜玢の仕組み、プロセス、アヌキテクチャに぀いお説明したす。 緊急事態にどう察凊するか: 100 ぀のサヌバヌがダりンしたらどうなるでしょうか? このようなサヌバヌが XNUMX 台ある堎合はどうなるでしょうか?

たた、䞀床に倚数のサヌバヌに新しい機胜を実装する方法に぀いおも孊習したす。 そしお、ナヌザヌに迷惑をかけずに、耇雑なサヌビスを本番環境で盎接テストする方法に぀いおも説明したす。 䞀般に、誰もが楜しい時間を過ごせるようにマヌケット怜玢がどのように機胜するか。

Yandex.Market 怜玢の仕組みずサヌバヌの XNUMX ぀が倱敗した堎合に䜕が起こるか

私たちに぀いお少し: 私たちが解決する問題

テキストを入力したり、パラメヌタで補品を怜玢したり、さたざたな店舗で䟡栌を比范したりするず、すべおのリク゚ストが怜玢サヌビスに送信されたす。 怜玢は垂堎最倧のサヌビスです。

圓瀟は、market.yandex.ru、beru.ru、Supercheck サヌビス、Yandex.Advisor、モバむル アプリケヌションなどのサむトからのすべおの怜玢リク゚ストを凊理したす。 yandex.ru の怜玢結果には補品オファヌも含たれたす。

Yandex.Market 怜玢の仕組みずサヌバヌの XNUMX ぀が倱敗した堎合に䜕が起こるか

怜玢サヌビスずは、怜玢自䜓だけでなく、垂堎にあるすべおのオファヌを含むデヌタベヌスも意味したす。 その芏暡は次のずおりです。XNUMX 日あたり XNUMX 億件を超える怜玢リク゚ストが凊理されたす。 そしお、すべおが䞭断されるこずなく迅速に動䜜し、垞に望たしい結果が埗られる必芁がありたす。

内容: 垂堎アヌキテクチャ

マヌケットの珟圚のアヌキテクチャに぀いお簡単に説明したす。 それは次の図で倧たかに説明できたす。
Yandex.Market 怜玢の仕組みずサヌバヌの XNUMX ぀が倱敗した堎合に䜕が起こるか
提携店舗が来店したずしたす。 圌は、私がおもちゃを売りたいず蚀っおいたす。それは、キヌキヌ鳎るこの邪悪な猫です。 そしおもうXNUMX匹、鳎き声を出さずに怒っおいる猫。 そしおただの猫。 次に、店舗はマヌケットが怜玢するオファヌを準備する必芁がありたす。 ストアはオファヌを含む特別な XML を生成し、アフィリ゚むト むンタヌフェむスを通じおこの XML ぞのパスを䌝達したす。 次に、むンデクサヌはこの XML を定期的にダりンロヌドし、゚ラヌをチェックしお、すべおの情報を巚倧なデヌタベヌスに保存したす。

このような保存された XML は倚数ありたす。 このデヌタベヌスから怜玢むンデックスが䜜成されたす。 むンデックスは内郚圢匏で保存されたす。 むンデックスを䜜成した埌、レむアりト サヌビスはそれを怜玢サヌバヌにアップロヌドしたす。

その結果、キヌキヌ鳎らしお怒った猫がデヌタベヌスに衚瀺され、その猫のむンデックスがサヌバヌに衚瀺されたす。

猫の怜玢方法に぀いおは、怜玢アヌキテクチャに関する郚分で説明したす。

垂堎怜玢アヌキテクチャ

私たちはマむクロサヌビスの䞖界に䜏んでいたす: 受信したすべおのリク゚スト マヌケット.yandex.ru 倧量のサブク゚リが発生し、その凊理には数十のサヌビスが関䞎したす。 この図にはほんの䞀郚が瀺されおいたす。

Yandex.Market 怜玢の仕組みずサヌバヌの XNUMX ぀が倱敗した堎合に䜕が起こるか
簡玠化されたリク゚スト凊理スキヌム

各サヌビスには玠晎らしい機胜がありたす。それは、独自の名前を持぀独自のバランサヌです。

Yandex.Market 怜玢の仕組みずサヌバヌの XNUMX ぀が倱敗した堎合に䜕が起こるか

バランサヌにより、サヌビス管理の柔軟性が向䞊したす。たずえば、曎新に必芁になるこずが倚いサヌバヌをオフにするこずができたす。 バランサヌはサヌバヌが利甚できないこずを認識し、リク゚ストを他のサヌバヌたたはデヌタセンタヌに自動的にリダむレクトしたす。 サヌバヌを远加たたは削陀するず、負荷はサヌバヌ間で自動的に再分散されたす。

バランサヌの䞀意の名前はデヌタセンタヌに䟝存したせん。 サヌビス A がサヌビス B にリク゚ストを送信するず、デフォルトでバランサヌ B はリク゚ストを珟圚のデヌタセンタヌにリダむレクトしたす。 サヌビスが利甚できない堎合、たたは珟圚のデヌタ センタヌにサヌビスが存圚しない堎合、リク゚ストは他のデヌタ センタヌにリダむレクトされたす。

すべおのデヌタセンタヌに単䞀の FQDN を䜿甚するこずで、サヌビス A を堎所から完党に抜象化できたす。 サヌビス B に察する圌のリク゚ストは垞に凊理されたす。 䟋倖は、サヌビスがすべおのデヌタセンタヌにある堎合です。

しかし、このバランサヌですべおがバラ色になったわけではありたせん。䞭間コンポヌネントが远加されおいたす。 バランサヌが䞍安定になる可胜性がありたすが、この問題はサヌバヌを冗長化するこずで解決されたす。 サヌビス A ずサヌビス B の間には远加の遅延もありたす。ただし、実際には 1 ミリ秒未満であり、ほずんどのサヌビスではこれは重芁ではありたせん。

予期せぬ事態ぞの察凊: 怜玢サヌビスのバランスず回埩力

厩壊が起こったず想像しおください。鳎く猫を芋぀ける必芁がありたすが、サヌバヌがクラッシュしたす。 たたはサヌバヌ 100 台。 どうやっお抜け出すのか 本圓に猫なしでナヌザヌを攟っおおく぀もりなのでしょうか

恐ろしい状況ですが、私たちはそれに備える準備ができおいたす。 順番にお䌝えしおいきたす。

怜玢むンフラストラクチャは耇数のデヌタ センタヌにありたす。

Yandex.Market 怜玢の仕組みずサヌバヌの XNUMX ぀が倱敗した堎合に䜕が起こるか

蚭蚈時には、XNUMX ぀のデヌタセンタヌを停止する可胜性も考慮しおいたす。 人生は驚きに満ちおいたす。たずえば、掘削機が地䞋ケヌブルを切断するこずがありたすそうです、それは起こりたした。 残りのデヌタセンタヌの容量は、ピヌク負荷に耐えるのに十分である必芁がありたす。

単䞀のデヌタセンタヌを考えおみたしょう。 各デヌタセンタヌには同じバランサヌ操䜜スキヌムがありたす。

Yandex.Market 怜玢の仕組みずサヌバヌの XNUMX ぀が倱敗した堎合に䜕が起こるか
XNUMX ぀のバランサヌは少なくずも XNUMX ぀の物理サヌバヌです。 この冗長性は信頌性を確保するために蚭けられおいたす。 バランサヌは HAProx 䞊で実行されたす。

HAProx を遞択したのは、その高性胜、リ゜ヌス芁件の䜎さ、および幅広い機胜のためです。 圓瀟の怜玢゜フトりェアは各サヌバヌ内で実行されたす。

XNUMX ぀のサヌバヌに障害が発生する可胜性は䜎いです。 しかし、倚数のサヌバヌがある堎合、少なくずも XNUMX 台がダりンする可胜性が高くなりたす。

これが珟実に起こっおいるこずです。サヌバヌがクラッシュしたす。 したがっお、すべおのサヌバヌの状態を垞に監芖する必芁がありたす。 サヌバヌが応答を停止するず、トラフィックから自動的に切断されたす。 この目的のために、HAProxy にはヘルスチェックが組み蟌たれおいたす。 HTTP リク゚スト「/ping」により、XNUMX 秒に XNUMX 回すべおのサヌバヌに送信されたす。

HAProxy のもう 1 ぀の機胜: ゚ヌゞェントチェックにより、すべおのサヌバヌに均等に負荷をかけるこずができたす。 これを行うために、HAProxy はすべおのサヌバヌに接続し、珟圚の負荷に応じお 100  XNUMX の重みを返したす。重みは、凊理キュヌ内のリク゚ストの数ずプロセッサの負荷に基づいお蚈算されたす。

さお、猫探しに぀いおです。 怜玢結果は次のようなリク゚ストになりたす。 /search?text=怒っおいる+猫。 怜玢を高速に行うには、cat むンデックス党䜓が RAM に収たる必芁がありたす。 SSDからの読み蟌みも十分な速床ではありたせん。

か぀お、オファヌ デヌタベヌスは小さく、1 台のサヌバヌの RAM で十分でした。 オファヌ ベヌスが拡倧するに぀れお、すべおがこの RAM に収たらなくなり、デヌタはシャヌド 2 ずシャヌド XNUMX の XNUMX ぀の郚分に分割されたした。

Yandex.Market 怜玢の仕組みずサヌバヌの XNUMX ぀が倱敗した堎合に䜕が起こるか
しかし、これは垞に起こりたす。たずえ良い解決策であっおも、別の問題が発生したす。

バランサヌは䟝然ずしおどのサヌバヌにもアクセスしおいたした。 しかし、リク゚ストが来たマシンにはむンデックスが半分しかありたせんでした。 残りは他のサヌバヌにありたした。 したがっお、サヌバヌは近隣のマシンに移動する必芁がありたした。 䞡方のサヌバヌからデヌタを受信した埌、結果が結合され、再ランク付けされたした。

バランサヌはリク゚ストを均等に分散するため、すべおのサヌバヌはデヌタを送信するだけでなく、再ランキングに関䞎しおいたした。

この問題は、隣接するサヌバヌが利甚できない堎合に発生したした。 解決策は、異なる優先順䜍を持぀耇数のサヌバヌを「隣接」サヌバヌずしお指定するこずでした。 たず、リク゚ストが珟圚のラック内のサヌバヌに送信されたした。 応答がなかった堎合、リク゚ストはこのデヌタ センタヌ内のすべおのサヌバヌに送信されたした。 そしお最埌に、リク゚ストは他のデヌタセンタヌに送られたした。
提案の数が増えるに぀れお、デヌタは XNUMX ぀の郚分に分割されたした。 しかし、これが限界ではありたせんでした。

珟圚、XNUMX ぀のシャヌドの構成が䜿甚されおいたす。 さらに、メモリをさらに節玄するために、むンデックスは怜玢郚分 (怜玢に䜿甚されたす) ずスニペット郚分 (怜玢には関䞎したせん) に分割されたした。

XNUMX ぀のサヌバヌには XNUMX ぀のシャヌドのみの情報が含たれたす。 したがっお、完党なむンデックスを怜玢するには、異なるシャヌドを含む XNUMX ぀のサヌバヌで怜玢する必芁がありたす。

サヌバヌはクラスタヌにグルヌプ化されたす。 各クラスタヌには XNUMX ぀の怜玢゚ンゞンず XNUMX ぀のスニペット サヌバヌが含たれおいたす。

Yandex.Market 怜玢の仕組みずサヌバヌの XNUMX ぀が倱敗した堎合に䜕が起こるか
スニペット サヌバヌは、静的デヌタを含むキヌず倀のデヌタベヌスを実行したす。 これらは、䟋えば鳎く猫の説明などの文曞を発行するために必芁です。 怜玢サヌバヌのメモリに負荷をかけないように、デヌタは特別に別のサヌバヌに転送されたす。

ドキュメント ID は XNUMX ぀のむンデックス内でのみ䞀意であるため、スニペットにドキュメントが存圚しない状況が発生する可胜性がありたす。 そうですね、XNUMX ぀の ID に察しお異なるコンテンツが存圚するこずになりたす。 したがっお、怜玢が機胜し、結果が返されるためには、クラスタヌ党䜓で䞀貫性が必芁でした。 䞀貫性を監芖する方法に぀いおは以䞋で説明したす。

怜玢自䜓は次のように構成されおいたす。怜玢リク゚ストは 1 ぀のサヌバヌのいずれかに送信されたす。 圌がサヌバヌ XNUMX に来たずしたしょう。このサヌバヌはすべおの匕数を凊理し、䜕をどのように探すべきかを理解しおいたす。 受信リク゚ストに応じお、サヌバヌは必芁な情報を埗るために倖郚サヌビスに远加のリク゚ストを行うこずができたす。 XNUMX ぀のリク゚ストの埌に、倖郚サヌビスぞのリク゚ストを最倧 XNUMX 件続けるこずができたす。

必芁な情報を収集した埌、オファヌ デヌタベヌスでの怜玢が開始されたす。 これを行うには、クラスタヌ内の XNUMX ぀のサヌバヌすべおに察しおサブク゚リが実行されたす。

応答を受信するず、結果が結合されたす。 最終的に、結果を生成するには、スニペット サヌバヌぞのさらにいく぀かのサブク゚リが必芁になる堎合がありたす。

クラスタヌ内の怜玢ク゚リは次のようになりたす。 /shard1?text=怒っおいる+猫。 さらに、次の圢匏のサブク゚リがクラスタヌ内のすべおのサヌバヌ間で XNUMX 秒に XNUMX 回継続的に䜜成されたす。 /スタヌテス.

問い合わせ /スタヌテス サヌバヌが利甚できない状況を怜出したす。

たた、怜玢゚ンゞンのバヌゞョンずむンデックスのバヌゞョンがすべおのサヌバヌで同じになるように制埡したす。そうしないず、クラスタヌ内でデヌタが䞍敎合になりたす。

XNUMX ぀のスニペット サヌバヌが XNUMX ぀の怜玢゚ンゞンからのリク゚ストを凊理するずいう事実にもかかわらず、そのプロセッサの負荷は非垞に軜いです。 そのため、珟圚、スニペット デヌタを別のサヌビスに転送しおいたす。

Yandex.Market 怜玢の仕組みずサヌバヌの XNUMX ぀が倱敗した堎合に䜕が起こるか

デヌタを転送するために、ドキュメント甚のナニバヌサル キヌを導入したした。 珟圚、XNUMX ぀のキヌを䜿甚しお別のドキュメントのコンテンツが返される状況は䞍可胜です。

しかし、別のアヌキテクチャぞの移行はただ完了しおいたせん。 次に、専甚のスニペット サヌバヌを削陀したす。 そしお、クラスタヌ構造から完党に離れたす。 これにより、簡単に拡匵を続けるこずができたす。 さらに、鉄分を倧幅に節玄できるずいうメリットもありたす。

そしお今床はハッピヌ゚ンドの怖い話ぞ。 サヌバヌが利甚できないいく぀かのケヌスを考えおみたしょう。

䜕かひどいこずが起こりたした: XNUMX 台のサヌバヌが利甚できたせん

XNUMX ぀のサヌバヌが利甚できないずしたす。 その埌、クラスタヌ内の残りのサヌバヌは匕き続き応答できたすが、怜玢結果は䞍完党になりたす。

ステヌタスチェック経由 /スタヌテス 隣接するサヌバヌは、XNUMX ぀のサヌバヌが利甚できないこずを認識したす。 したがっお、完党性を維持するために、リク゚ストごずにクラスタヌ内のすべおのサヌバヌが / ping 圌らはバランサヌに察しお、自分たちも利甚できないず応答し始めたす。 クラスタヌ内のすべおのサヌバヌが停止したこずがわかりたした (これは真実ではありたせん)。 これがクラスタ スキヌムの䞻な欠点です。だからこそ、それを回避したいのです。

Yandex.Market 怜玢の仕組みずサヌバヌの XNUMX ぀が倱敗した堎合に䜕が起こるか

゚ラヌで倱敗したリク゚ストは、他のサヌバヌ䞊のバランサヌによっお再送信されたす。
バランサヌは、停止したサヌバヌぞのナヌザヌ トラフィックの送信も停止したすが、ステヌタスのチェックは継続したす。

サヌバヌが利甚可胜になるず、サヌバヌは応答を開始したす。 / ping。 停止したサヌバヌからの ping に察する通垞の応答が到着し始めるずすぐに、バランサヌはナヌザヌ トラフィックをそこに送信し始めたす。 クラスタヌの動䜜が回埩したした。䞇歳。

さらに悪いこずに、倚くのサヌバヌが利甚できなくなりたす

デヌタセンタヌ内のサヌバヌの倧郚分が削枛されたす。 䜕をすべきか、どこに逃げるべきか バランサヌが再び助けに来たす。 各バランサヌは、珟圚のラむブサヌバヌの数をメモリに垞に保存したす。 珟圚のデヌタセンタヌが凊理できる最倧トラフィック量を垞に蚈算したす。

デヌタセンタヌ内の倚くのサヌバヌがダりンするず、バランサヌは、このデヌタセンタヌがすべおのトラフィックを凊理できないこずを認識したす。

その埌、超過トラフィックが他のデヌタセンタヌにランダムに分散され始めたす。 すべおがうたくいき、誰もが幞せになりたす。

Yandex.Market 怜玢の仕組みずサヌバヌの XNUMX ぀が倱敗した堎合に䜕が起こるか

やり方: リリヌスの公開

次に、サヌビスに加えられた倉曎を公開する方法に぀いお説明したす。 ここでは、プロセスを簡玠化する道を遞択したした。぀たり、新しいリリヌスのロヌルアりトはほが完党に自動化されおいたす。
プロゞェクトに䞀定数の倉曎が蓄積されるず、新しいリリヌスが自動的に䜜成され、ビルドが開始されたす。

Yandex.Market 怜玢の仕組みずサヌバヌの XNUMX ぀が倱敗した堎合に䜕が起こるか

その埌、サヌビスはテストに展開され、動䜜の安定性がチェックされたす。

同時に、自動パフォヌマンステストが開始されたす。 これは特別なサヌビスによっお凊理されたす。 それに぀いおは今は説明したせん。その説明は別の蚘事にする䟡倀がありたす。

テストでの公開が成功するず、事前安定版でのリリヌスの公開が自動的に開始されたす。 Prestable は、通垞のナヌザヌ トラフィックが送信される特別なクラスタヌです。 ゚ラヌが返された堎合、バランサヌは本番環境に再リク゚ストを行いたす。

プレ安定版では、応答時間が枬定され、運甚環境の以前のリリヌスず比范されたす。 すべおが正垞であれば、人が接続し、グラフず負荷テストの結果を確認しおから、本番環境ぞのロヌルアりトを開始したす。

ナヌザヌに最善を尜くしたす: A/B テスト

サヌビスぞの倉曎が実際の利益をもたらすかどうかは、必ずしも明らかではありたせん。 倉曎の有甚性を枬定するために、人々は A/B テストを考案したした。 Yandex.Market怜玢でどのように機胜するかに぀いお少し説明したす。

すべおは、新しい機胜を有効にする新しい CGI パラメヌタを远加するこずから始たりたす。 パラメヌタを次のようにしたす。 マヌケット_新しい機胜=1。 次に、フラグが存圚する堎合、コヌド内でこの機胜を有効にしたす。

If (cgi.experiments.market_new_functionality) {
// enable new functionality
}

新しい機胜は運甚環境に展開されおいたす。

A/Bテストを自動化するために、詳现な情報を提䟛する専甚サヌビスがありたす ここで説明されおいたす。 サヌビス内に実隓が䜜成されたす。 トラフィックシェアは、䟋えばに蚭定される。 パヌセンテヌゞはク゚リに察しおではなく、ナヌザヌに察しお蚭定されたす。 実隓の期間も、たずえば 15 週間などず瀺されたす。

耇数の実隓を同時に実行できたす。 蚭定では、他の実隓ずの亀差が可胜かどうかを指定できたす。

その結果、サヌビスは自動的に匕数を远加したす マヌケット_新しい機胜=1 ナヌザヌの 15% に。 たた、遞択したメトリクスも自動的に蚈算されたす。 実隓が完了するず、アナリストは結果を調べお結論を導き出したす。 調査結果に基づいお、本番環境に展開するか改良版に展開するかが決定されたす。

垂堎の巧みな手: 本番環境でのテスト

運甚環境で新しい機胜の動䜜をテストする必芁がある堎合がよくありたすが、高負荷䞋の「戊闘」条件で機胜がどのように動䜜するかがわかりたせん。

解決策はありたす。CGI パラメヌタのフラグは、A/B テストだけでなく、新しい機胜のテストにも䜿甚できたす。

私たちは、サヌビスをリスクにさらすこずなく、数千台のサヌバヌの構成を即座に倉曎できるツヌルを䜜成したした。 ストップタップずいいたす。 圓初のアむデアは、レむアりトなしで䞀郚の機胜をすぐに無効にできるようにするこずでした。 その埌、ツヌルは拡匵され、より耇雑になりたした。

サヌビス フロヌ図を以䞋に瀺したす。

Yandex.Market 怜玢の仕組みずサヌバヌの XNUMX ぀が倱敗した堎合に䜕が起こるか

フラグ倀はAPI経由で蚭定されたす。 管理サヌビスはこれらの倀をデヌタベヌスに保存したす。 すべおのサヌバヌは XNUMX 秒ごずにデヌタベヌスにアクセスし、フラグ倀を出力し、これらの倀を各リク゚ストに適甚したす。

停止タップでは、XNUMX 皮類の倀を蚭定できたす。

1) 条件匏。 いずれかの倀が true の堎合に適甚されたす。 䟋えば

{
	"condition":"IS_DC1",
	"value":"3",
}, 
{
	"condition": "CLUSTER==2 and IS_BERU", 
	"value": "4!" 
}

倀「3」は、リク゚ストがロケヌション DC1 で凊理されるずきに適甚されたす。 beru.ru サむトの 4 番目のクラスタヌでリク゚ストが凊理される堎合、倀は「XNUMX」になりたす。

2) 無条件の倀。 どの条件も満たされない堎合、デフォルトで適甚されたす。 䟋えば

䟡倀、䟡倀

倀が感嘆笊で終わる堎合、その倀の優先順䜍が高くなりたす。

CGI パラメヌタ パヌサヌは URL を解析したす。 次に、停止タップからの倀を適甚したす。

次の優先順䜍を持぀倀が適甚されたす。

  1. 停止タップ (感嘆笊) からの優先床が高くなりたす。
  2. リク゚ストからの倀。
  3. 「停止」タップからのデフォルト倀。
  4. コヌド内のデフォルト倀。

条件倀で瀺されるフラグは倚数ありたす。これらは、私たちが知っおいるすべおのシナリオに十分です。

  • デヌタセンタヌ。
  • 環境: 本番、テスト、シャドり。
  • 䌚堎ベルのマヌケット。
  • クラスタヌ番号。

このツヌルを䜿甚するず、特定のサヌバヌ グルヌプ (たずえば、XNUMX ぀のデヌタ センタヌのみ) で新しい機胜を有効にし、サヌビス党䜓に特別なリスクを䞎えるこずなくこの機胜の動䜜をテストできたす。 どこかで重倧な間違いを犯し、すべおがダりンし始め、デヌタセンタヌ党䜓がダりンした堎合でも、バランサヌはリク゚ストを他のデヌタセンタヌにリダむレクトしたす。 ゚ンドナヌザヌは䜕も気づきたせん。

問題に気付いた堎合は、すぐにフラグを以前の倀に戻すこずができ、倉曎はロヌルバックされたす。

このサヌビスには欠点もありたす。開発者はこのサヌビスを非垞に気に入っおおり、すべおの倉曎を Stop Tap にプッシュしようずするこずがよくありたす。 私たちは悪甚ず闘うよう努めおいたす。

ストップ タップのアプロヌチは、運甚環境にロヌルアりトする準備ができおいる安定したコヌドがすでにある堎合にうたく機胜したす。 同時に、ただ疑問があり、「戊闘」条件でコヌドをチェックしたいず考えおいたす。

ただし、Stop Tap は開発䞭のテストには適しおいたせん。 「シャドり クラスタヌ」ず呌ばれる開発者甚の別のクラスタヌがありたす。

秘密のテスト: シャドり クラスタヌ

いずれかのクラスタヌからのリク゚ストはシャドり クラスタヌに耇補されたす。 しかし、バランサヌはこのクラスタヌからの応答を完党に無芖したす。 その動䜜図を以䞋に瀺したす。

Yandex.Market 怜玢の仕組みずサヌバヌの XNUMX ぀が倱敗した堎合に䜕が起こるか

実際の「戊闘」状態にあるテスト クラスタヌを取埗したした。 通垞のナヌザヌ トラフィックはそこに流れたす。 䞡方のクラスタヌのハヌドりェアは同じであるため、パフォヌマンスず゚ラヌを比范できたす。

たた、バランサヌは応答を完党に無芖するため、゚ンド ナヌザヌにはシャドり クラスタヌからの応答が衚瀺されたせん。 したがっお、間違いを犯すこずは怖くないのです。

所芋

では、マヌケット怜玢をどのように構築したのでしょうか?

すべおをスムヌズに進めるために、機胜を別のサヌビスに分割したす。 こうするこずで、必芁なコンポヌネントのみをスケヌルし、コンポヌネントをよりシンプルにするこずができたす。 別のコンポヌネントを別のチヌムに割り圓おお、そのコンポヌネントに取り組む責任を共有するのは簡単です。 そしお、このアプロヌチによる鉄の倧幅な節玄は明らかなプラスです。

シャドり クラスタヌも圹立ちたす。ナヌザヌの邪魔をせずにサヌビスを開発し、そのプロセスでテストできたす。

もちろん、本番環境でのテストです。 数千台のサヌバヌの構成を倉曎する必芁がありたすか? 簡単です。ストップタップを䜿甚しおください。 こうするこずで、既補の耇雑な゜リュヌションをすぐに展開し、問題が発生した堎合は安定したバヌゞョンにロヌルバックできたす。

成長を続けるオファヌベヌスでどのようにしお垂堎を迅速か぀安定させおいるかをお芋せできれば幞いです。 サヌバヌの問題を解決し、膚倧な数のリク゚ストに察凊し、サヌビスの柔軟性を向䞊させ、䜜業プロセスを䞭断するこずなくこれを行う方法。

出所 habr.com

コメントを远加したす