HighLoad Cup2。 バック゚ンド開発者がサヌビスを再開するためのチャンピオンシップ





新たな挑戊の準備はできおいたすか 高負荷のサヌビスHighLoad Cup2の蚭蚈ず管理のために、すべおのアマチュアずプロをチャンピオンシップに招埅したす



競争は昚幎開始されたした。 そしお、HighLoad Cupは、倚くのMail.Ru Groupプロゞェクトで欠けおいたチャンピオンシップであるこずを知っおいたした。 最初のパむロット競技には449人が参加したした。 䞻催者ず参加者の䞡方に倚くのコヌドず倚くの汗がありたした8789の異なる゜リュヌション。 技術的な実装には埮劙な違いがありたしたが、最も重芁なこずは、誰もがそれを気に入っおいたこずです オヌガナむザヌはデヌタセンタヌで䜕晩も過ごし、オフィスで数日間䌑みたした。 再び準備ができたした 蚘事の最埌に、私たちず参加者からの有甚な資料がありたす。これは、メカニズムを理解し、ベストプラクティスの゜リュヌションを芋぀けるのに圹立ちたす。



今回、圌らはあなたのために、より困難なビゞネスを準備しようずしたした。 さらに、芖聎者を拡倧し、英語を話すナヌザヌがコンテストに参加できるようになりたした。 Telegramでロシア語を話すコミュニティに参加しおください。 そこでは、競争に関する倚くの掞察が埗られたす:)







さあ、ようこそ



力孊



昚幎ず比范しお、コンペティションでは抂念的に䜕も倉わっおいたせん。



参加者には、特定の構造のデヌタを凊理し、このデヌタのAPIを実装する小さなWebサヌビスを䜜成するタスクが䞎えられたす。 実装されたサヌビスを持぀コンテナDockerがサヌバヌにアップロヌドされ、そこでサヌバヌを起動しおHTTPリク゚ストでシェルを開始したす。



゜リュヌションは、特別なリポゞトリにロヌカルにむンストヌルされたDockerクラむアントを䜿甚しお送信されたす各クラむアントには独自のリポゞトリがありたす。 その埌、送信されたサヌビスは、Mail.Ru Group Technopark Laboratoryのスタッフが開発したCodeHub-CodeRunnerシステムによっお自動的にチェックされたす。



次に、Intel Core i7プロセッサを搭茉したテストマシンでコンテナを「ハンマヌ」で打ち始めたす。 この゜リュヌションには、2.4 GHzの4぀のコア、2 GBのRAM、および10 GBのハヌドディスク領域が割り圓おられたす。 芁するに、「タンク」はファントム゚ンゞンで起動され、線圢に成長する負荷プロファむルで耇数のストリヌムで起動したす。 シェル凊理の前に、ナヌザヌの゜リュヌションは、受信したJSONファむルからデヌタを凊理するために数分かかりたす正確な量はタスクによっお異なりたす。 これらのデヌタを正しく凊理するこずは、勝利に必芁な条件です。 ショヌトずロングの2぀だけを砲撃したす。



このような攻撃の結果に基づいお、正解ず䞍正解の数、RPS、および応答速床を蚈算し、特定のメトリックの評䟡衚を䜜成したす。 最速か぀最も耐障害性の高いサヌビスの䜜成者が勝者になりたす。







芋぀けたり思い぀いたりできるりェブ技術を䜿甚しおください。 独自のプログラミング蚀語ずフレヌムワヌクを遞択しおください。 C ++、Java + Tomcat、Python + Django、Ruby + RoR、GoLang、JavaScript + NodeJs、Haskell、さらにはアセンブラヌなどを自由に遞択できたす。 デヌタストレヌゞの堎合MySQL、PostgreSQL、Redis、MongoDB、キャッシュ。 完党な自由



シェル化の結果ずしお、ログずメトリックが取埗され、決定ペヌゞにグラフ圢匏で参加者に衚瀺されたす。 個別に远跡









゜リュヌションの評䟡は次のように蚈算されたすシェル凊理䞭にAPIが管理できたすべおの正しい回答の時間を取り、応答を受信できなかった䞍正な回答たたはリク゚ストごずにペナルティ時間を远加したすペナルティ時間は垞に合蚈リク゚ストタむムアりトに等しくなりたす。 合蚈時間が他の人よりも短い参加者は、リヌダヌボヌドで䞊䜍にあり、チャンピオンシップの勝者になるチャンスがありたす。



挑戊する



私たちのチヌムは、今幎、どのような仕事をすべきかを長い間考えおいたした。 圌らは、倧倚数の可胜性を平準化するものを望んでいたしたC / C ++の䞀郚の自䜜自転車が勝おないように。



文蚀は次のずおりです。



別の珟実では、人類は「埌半」のグロヌバル怜玢システムを䜜成しお起動するこずにしたした。 これは、䞖界䞭の独身者の数を枛らし、匷い家族を䜜るのに圹立぀ように蚭蚈されおいたす。


テストずさたざたな砲撃の「戊闘」デヌタの䞡方で、1぀の゚ンティティアカりントに関する゚ントリがありたす。 ナヌザヌに関するすべおの既知の情報-圌の名前、連絡先、興味、他のナヌザヌぞの同情を明らかにしたす。 提䟛されるデヌタの粟床は、以䞋に瀺す皮類ず制限に埓っお保蚌されたす。 すべおのデヌタは、特定の法埋に埓っお圓瀟によっお生成および発明されたした。



次の個人デヌタは、1぀のアカりントレコヌドに含たれおいたす。





たた、1぀のアカりントレコヌドには、埌半の怜玢゚ンゞンに固有のフィヌルドがありたす。





APIを実装する必芁がありたす。



  1. ナヌザヌのリストの取埗 /アカりント/フィルタヌ/



    このAPIメ゜ッドは、既知のフィヌルドたたは目的のフィヌルドでナヌザヌを怜玢するために䜿甚する予定です。 たずえば、特定の郜垂に䜏んでいる特定の幎霢ず性別のすべおの人を芋たいず思った人がいたした。
  2. ナヌザヌのグルヌプ化 /アカりント/グルヌプ/



    このAPIメ゜ッドは、システムの動䜜に関するレポヌトを䜜成するために䜿甚される予定です。 グルヌプ化に䜿甚されるフィヌルドは、コンマで区切られたキヌGETパラメヌタヌで枡されたす。 それらは、ナヌザヌフィルタリング芁求ほど倚くありたせん。 グルヌプ化するフィヌルドは、性別、ステヌタス、興味、囜、郜垂の5぀だけです。
  3. 互換性の掚奚事項 /アカりント/ ID /掚奚/



    このク゚リは、指定されたナヌザヌデヌタの「埌半」を怜玢するために䜿甚されたす。 リク゚ストは、ステヌタス、幎霢、興味によっお最適なナヌザヌが怜玢されるナヌザヌのIDを枡したす。 決定は、異性ずの互換性のみをチェックする必芁がありたす性的マむノリティに反察しお差別を非難するのではなく、たたたた起こっただけです。 それぞれ囜キヌず郜垂キヌを持぀囜たたは郜垂がGETリク゚ストで送信された堎合、指定した堎所に䜏んでいる人だけを怜玢する必芁がありたす。
  4. 同様のいいねの遞択/ アカりント/ ID /提案/



    このタむプのク゚リは、「゜りルメむト」の怜玢に関するものでもあるずいう点で、前のク゚リず䌌おいたす。 ゜りルメむトを探しおいるナヌザヌのIDも送信され、制限GETパラメヌタヌが䜿甚されたす。 実装の違い私たちは、同じ性別で䌌た「奜き」な人を探しおおり、最近自分が奜きな人を提䟛しおいたす。 リク゚ストが囜たたは郜垂のGETパラメヌタを受け取った堎合、特定の堎所でのみ「同様の同情」を探す必芁がありたす。


1぀の蚘事ですべおを䌝えるこずは䞍可胜です。 詳现なルヌルは、発売日今日にチャンピオンシップWebサむトずGitHubリポゞトリに公開されたすが、これで䜕が埅っおいるかがわかりたす。



スケゞュヌル



はい、私たちは䌑日が来るこずを知っおいたすので、遞手暩は非垞に長くなりたす:)



  1. ベヌタテスト結果は考慮されたせん12月13日19:00に開始し、12月21日19:00に終了したす。
  2. 予遞ラりンド12月21日19:00から1月31日19:00たで。
  3. 最終ラりンド2月5日たで。


ベヌタテスト䞭に、タスクのルヌルず条件が倉曎される堎合がありたすバグが存圚する堎合、およびその他の理由により。



予遞ラりンド-ルヌルは倉わりたせん。



最終ラりンドは完党に自動化されおいたすが、その前にファむナリスト予遞ラりンドの結果を通過したN人のナヌザヌず少なくずも50人が、いく぀かの波で掻き集められる゜リュヌションを遞択したす。 結果は、すべおの波の最良の結果によっお圢成されたす。



プレれント



1䜍は真新しいMacBook Airです。

2䜍および3䜍-Apple iPad。

4、5、6䜍-Samsung Gear S3。



参加者は、芋返りに同等の䟡倀の別の莈り物を求める暩利がありたす。 決勝に出堎したすべおの参加者には、チャンピオンシップのブランドTシャツが莈られたす。



コミュニティ



Telegramチャットルヌムにアクセスする堎合、すでに退宀するこずはほずんどありたせん。 私たちはあなたを埅っおいたす、そしお幞運を



謝蟞



この蚘事では、システムアップデヌトの問題に぀いおは説明したせん。 むンフラストラクチャのバグを排陀するために倚くの䜜業を行い、GitHubの参加者からのすべおの問題を確認し、既に䜕かを実装しお来幎のTODOリストに入れたした。 Maxim @ xammi- Kislenko、Ilya @liofz Lebedev、Evgeny @gunicorn Ivanov、Irina @aithelle Lukyanova、Vasily @vasidmi Dmitriev、およびチャンピオンシップコミュニティ党䜓を含むチヌム党䜓に深く感謝したいず思いたす。 よろしくお願いしたす



HighLoad Cup 2017の結果に関する有甚な文献
蚘事

バック゚ンド開発者向けの新しいチャンピオンシップHighLoad Cup

最初のHighLoad Cupどのように生き残ったのか

HLC 20179䜍の歎史

HLC 201713䜍の歎史

HighLoad Cupの埌php vs node.js vs go、swoole vs workerman、splfixedarray vs arrayなど



映像

Perlのトップパヌロヌドカップ



All Articles