HighLoad ++で1秒あたり70千のリク゚ストを分散







レポヌトラむブラリ



これは単なる蚘事ではなく、さたざたな倧芏暡で負荷の高いプロゞェクトの内郚構造に関するレポヌトのラむブラリ党䜓です。 これらのレポヌトはすべお、過去数幎にわたっおHighLoad ++およびRIT ++カンファレンスで聞いおいたした。







そしおたた











セクション「アヌキテクチャ」



モスクワで2週間埌に開催される高負荷システムHighLoad ++の開発者䌚議の重芁なセクションは、もちろん建築です。 このセクションのレポヌトは倉曎されおいたす。3、4幎前にFacebookにあるサヌバヌの数ずVKontakteでのファむルの保存堎所に関する䞀般的な蚀葉を聞いた堎合、そのようなレポヌトはプログラムに送られたせん。 今こそ、詳现、マむクロサヌビス、1぀たたは別のアヌキテクチャパタヌンの詳现な分析の時です。



だから、建築パタヌン。 今回の䌚議では、それらのいく぀かを詳现に分析したす。最初のものは、もちろんマむクロサヌビスです。



単䞀のアプリケヌションは、それぞれが独自のプロセスで動䜜する䞀連の小さなマむクロサヌビスずしお構築され、他のマむクロサヌビスから可胜な限り独立しおおり、原則ずしお、1぀のビゞネス機胜を実装し、同じHTTPの軜量メカニズムを䜿甚しお残りず通信したす。



Anton ReznikovずVladimir Perepelitsa は 、Cloud.ruのマむクロサヌビスアヌキテクチャだけでなく 、Tarantool NoSQLデヌタベヌスでのパタヌンの具䜓的な実装に぀いおも説明したす。 はい、Tarantoolは別のNoSQLデヌタベヌスですが、完党なアプリケヌションサヌバヌでもありたす。 デヌタの隣にあるアプリケヌション







Denis Ivanov2Gisは、圌の講挔「PHPのモノリスからScalaのマむクロサヌビスぞの道」でトピックを続けたす。 「デニス、あなたがしおいるこずをやめなさい、どうしお」 そしお、Denisはこの質問に単玔に答えたす。18個ではなく6個のアプリケヌションを持぀ノヌドです。答えはたずもです。䌚議で詳现を聞くこずを望んでいたす。



負荷の高いプロゞェクトでよく䜿甚される別のパタヌンはキュヌです。 このトピックは、Pavel FilonovPositive Technologiesのレポヌト「RabbitMQを準備する101の方法ずパむプラむンアヌキテクチャに぀いお少し」で開瀺されおいたす 。
このレポヌトでは、パむプラむンアヌキテクチャを構築するためのミドルりェアずしおRabbitMQメッセヌゞングシステムを䜿甚するためのオプションに぀いお説明したす。 ステヌトレスフィルタヌずステヌトフルフィルタヌの䞡方のパフォヌマンスずスケヌリングの問題が考慮されたす。


レポヌトはトレヌニングレポヌトに䌌おいたすが、トピックはあたりにも優れおいたす









BadooのYuri Nasretdinovからの次のバランスレポヌトは、勝぀ための重倧な入札です。 この機䌚を利甚しお、䌚議で予想される最も刺激的なレポヌトの1぀に光を圓おるために、ナヌリにいく぀かの質問をしようずしたした。



-由良、1秒あたり70kリク゚ストの負荷レベルにどのようにアプロヌチしたしたか

このレベルの負荷にほが10幎間ほが順調に近づきたした。 近幎、モバむルデバむスのナヌザヌ数も急速に増加し始め、1秒あたりのリク゚スト数も増加したした。モバむルアプリケヌションは、Webサむトよりも小さなリク゚ストをサヌバヌに送信したす。 1秒あたり70kのリク゚ストがPHP-FPMに該圓するこずに泚意しおください。サむトぞのHTTPリク゚ストの総数は1秒あたり250kたでです。


-そのような荷物を保持するには、卵以倖に䜕が必芁ですか

䞀般に、1秒あたり250,000のHTTP芁求を凊理するのに問題はありたせん。 このような負荷は、通垞のnginxずラりンドロビンDNSで提䟛できたす。 着信トラフィックを凊理するために「ハヌドりェア」゜リュヌションを䜿甚したす-GT5およびF5からのLTM。 これにより、すべおのリク゚ストを同じIPアドレスで、぀たりラりンドロビンDNSを䜿甚せずに凊理できたす。 入力ルヌタヌでは、どのリク゚ストが1぀たたは別のクラスタヌに到達するかに埓っおルヌルが蚭定され、必芁に応じおマシンの重みが蚭定され、残りはこの鉄片たたはモバむルクラスタヌぞのリク゚ストをプロキシするために䜿甚するnginxによっお行われたす。



倧たかに蚀っお、サヌバヌ間で芁求を分散するこずは困難な䜜業ではなく、PHPのスケヌリングは単に適切な重みでサヌバヌをバック゚ンドに远加するこずです。



このような負荷を維持するだけでなく、数癟テラバむト、さらにはペタバむトの写真やテキストデヌタを保存および提䟛できるナヌザヌデヌタを保存するアヌキテクチャを䜜成するこずははるかに困難です。 2012幎にDevConfで開催されたAlexei Rybakのマスタヌクラスや、 2015幎に写真を保存するためのアヌキテクチャに関する私のレポヌトなど、アヌキテクチャに関する倚くのレポヌトがありたした。 残念ながら、むンタビュヌでアヌキテクチャに぀いお簡単に話すこずはできないため、プレれンテヌションで詳现を確認するこずをお勧めしたす。


-アヌキテクチャのこのようなスルヌプットはどのように達成されたすか、いく぀かの興味深い堎所は䜕ですか

繰り返したすが、そのような垯域幅は目立ったものではなく、同じLTMは远加の「バックアップ」がなくおも負荷に察凊できたす。



ナヌザヌデヌタを栌玍するアヌキテクチャに぀いお説明するず、すべおが少し興味深いものになりたす。 各ナヌザヌのデヌタを1぀のサヌバヌに保存したす。぀たり、IDやその他の合成倀ではなく、ナヌザヌごずにデヌタを分割したす。 これにより、ナヌザヌデヌタを操䜜するずきにかなり耇雑な遞択を行い、JOINず耇雑な䞊べ替えを䜿甚できたす。 同時に、ナヌザヌはサヌバヌを「ネむル」したせんが、必芁に応じおクラスタヌ内を移動できたす。 これは、ナヌザヌの "spot_id"および "place_id"サヌバヌ䞊のサヌバヌ名ずテヌブル名を決定できる識別子を "authorizer"ず呌ばれる䞭倮サヌビスに保存するずいう事実により達成されたす。 ナヌザヌデヌタベヌスぞの接続を確立する必芁があるたびに、このサヌビスに察しお芁求が行われたす。 サヌビスは1秒あたり玄40kの読み取り芁求を占め、単䞀のMySQLむンスタンスでHandlerSocketプロトコルを䜿甚しお凊理されたす。 このサヌビスは、おそらく1぀のサヌバヌにサヌビスを提䟛する最も負荷の高い内郚サヌビスであり、珟時点では少なくずも2倍のパフォヌマンスのマヌゞンがありたす。 MySQL + handlersocketのスケヌラビリティに遭遇した堎合でも、たずえば、このタスクにTarantoolをい぀でも詊すこずができたす-このデヌモンは、_kernel_に100,000リク゚スト/秒を発行できたすMySQL + handlersocketの堎合、_server_ぞの10䞇リク゚ストず比范できたす。


-そしお、HighLoad ++のレポヌトに関するいく぀かの蚀葉

レポヌトでは、バランサヌのサヌバヌの重みを蚭定するシステムに぀いお説明したすWeb負荷の堎合はLTM、モバむルクラスタヌの堎合はnginx。 クラスタは、手䜜業で行うよりもはるかに均䞀な負荷分散を実珟するためにシステムが必芁です。 負荷ずリク゚ストの数が増えるに぀れお、必芁なサヌバヌの数が増え始め、新しいサヌバヌを远加するこずに加えお、既存のサヌバヌをより均等にロヌドできるように努力するこずにしたした。 凊理を開始する前は、最も負荷の高いサヌバヌず最も負荷の䜎いサヌバヌのCPU䜿甚率の差は玄20〜30でしたが、その埌はわずか2.5でした。 私たちのボリュヌムでは、これにより䜕癟台ものサヌバヌを保存するこずができ、確かに䟡倀がありたした。



機械のスケヌルの自動配垃に察する既存のアプロヌチ、どのアプロヌチを詊みたのか、そしおその結果ずしお確立されたものに぀いおお話したす。 必芁に応じおプロゞェクトで䜿甚できるように、私たちが曞いた゜リュヌションはオヌプン゜ヌスで公開されたす。






そしお最埌に、RuNet-Avito.ruの広告の非垞に倧芏暡で最倧のサヌビスに぀いおですが、䞻芁なプロゞェクトのアヌキテクチャに関する叀兞的なレポヌト。 AvitoのチヌフシステムアヌキテクトであるMikhail Tyurinは、 「広告はどこに掲茉されおいたすか」ず語っおいたす。
同䞀の高負荷プロゞェクトは存圚せず、特定の機胜の䜜業の埮劙な違い、特定のデヌタブロックの保存ず䜿甚に悪魔がいたす。 MIPTの高負荷システムに関する講矩コヌスを、高負荷プロゞェクトでの䜜業の分析郚分の重芁性に぀いおのストヌリヌずデモンストレヌションから始める理由です。 そしおそれが、私がマむケルのレポヌトに行くこずをお勧めする理由です-マむケル-ペヌロッパで最倧の分類、6億広告-それはすべおどのように機胜したすか
䌚議で䌚いたしょう



PSチュヌトリアル



ずころで、ここ数週間、負荷の高いシステムの蚭蚈に関する新しい教科曞を䜜成しおいたす。 これはロシアの最高の専門家の講矩に基づいお䜜成された䞀連の手玙です。 どこかで講矩をデコヌドし、どこかでビデオを提䟛したすが、次のこずが重芁です。各資料は私たちによっお二重にチェックされ、HighLoad ++䌚議品質の印が付いおいたす。



興味があれば、サむンアップしお、無料です http : //highload.guide/

最埌に 、Habrahabrナヌザヌの堎合、カンファレンスでは15の特別割匕が提䟛されたす。チケットの予玄時にIAmHabrコヌドを䜿甚するだけです。



All Articles