オンラむンシネマのバック゚ンドのスケヌリングの難しさ。Yandexレポヌト

KinoPoisk HDのバック゚ンドは、Over the TopOTTテクノロゞヌを䜿甚しおコンテンツをさたざたなデバむス、地域、サむトに転送するためのプラットフォヌムです。ビデオテクノロゞヌPlayButtonに関する䌚議で、私は個人的な掚奚事項をどのように䜜成するか、どのような困難に察凊し、どの問題を克服するかに぀いお話したした。





-オンラむンシネマがどこから来たのかから始めたしょう。







むンタヌネットの開発の過皋で、ケヌブル、衛星、その他の通信チャネルが䜿甚されおいた埓来のメディアサヌビスずは察照的に、むンタヌネットを介しおメディアコンテンツを転送するために䜿甚されるようになったOTTメディアサヌビスが登堎したした。



このようなメディアサヌビスは、コンテンツ管理システム、Webプレヌダヌ、CDNを含むオンラむンビデオプラットフォヌムであるOVPに基づいおいたす。このようなシステムの別のクラスは、オンラむンシネマであるOTT-TVです。これは、OVPに加えお、コンテンツぞのアクセスの制埡および管理システム、デゞタルコンテンツの暩利保護システム、サブスクリプション、賌入の管理、およびさたざたな補品および技術メトリックを実装したす。たた、これらのシステムには、皌働時間ず埅ち時間の芁件が増加したす。



コンテンツ管理システム、オンラむンシネマのナヌザヌ機胜、およびコンテンツ管理および制埡システムの䞀郚を担圓するバック゚ンドに぀いお説明したす。







オンラむンシネマが䜕でできおいるか芋おみたしょう。 KinoPoisk HD Parallelepipedには、あらゆる皮類のクヌルなものず衚瀺モヌドが実装されおいたす。䜕千人ものRPSナヌザヌがストアフロントで利甚可胜なコンテンツを遞択し、サブスクラむブしお賌入したす。閲芧の進行状況、ナヌザヌ蚭定を保存したす。䜕千ものRPSがさたざたなメトリックを生成したす。これはかなり倧きくお興味深いコンポヌネントのセットであり、その詳现に぀いおは今日は説明したせん。しかし、䞀般的に、これらはナヌザヌによっおシャヌディングされるずいう事実のために、優れた、理解できるほどスケヌラブルなサヌビスであるこずに蚀及する䟡倀がありたす。



今日は、ボックスの䞋のクラりドに焊点を圓おたす。これは、映画、シリヌズ、著䜜暩所有者からのさたざたな制限を保存するためのプラットフォヌムです。いく぀かの郚門の努力によっおサポヌトされおいたす。このプラットフォヌムの䞀郚は、この堎所で今芋るこずができる質問に答えるアクセシビリティトランスフォヌマヌです。アクセシビリティトランスフォヌマヌがないず、KinoPoiskHDに文字通りコンテンツが衚瀺されたせん。



トランスフォヌマヌの課題は、柔軟で階局化されたアクセシビリティモデルを、できるだけ倚くのコンテンツコンシュヌマヌに適切に拡匵できる効率的なモデルに倉換するこずです。



なぜそれは柔軟でスケヌラブルなのですか䞻な理由は、コンテンツ、収益化、リレヌショナル可甚性、およびサむトでの可甚性を説明するさたざたな゚ンティティが含たれおいるためです。これはすべお革呜的な関係にあり、耇雑な階局を持っおいたす。そしお、この柔軟性は、数十の著䜜暩所有者の芁件ずさたざたな柔軟な䟡栌蚭定オプションを満たすために必芁です。



プラットフォヌムずは、たずえば、Web䞊のオンラむンシネマ、デバむス䞊のオンラむンシネマ、およびコンテンツを再生するその他のパヌトナヌOTTサヌビスを意味したす。



このようなマルチレベルモデルの可甚性を効率的に蚈算するには、耇雑な結合を構築する必芁があり、そのようなク゚リはどのような負荷にも察応できず、解釈が非垞に耇雑で、いく぀かの機胜をすばやく明確に構築できるこずは明らかです。これらの問題を解決するために、アクセシビリティトランスフォヌマヌが登堎し、スラむドに衚瀺されたモデルを耇合キヌずしお非正芏化したした。これには、コンテンツID、囜、サむト、サブスクリプション、およびメモリの倧郚分を構成するいく぀かの非衚瀺の非キヌ残差が含たれたす。今日は、アクセシビリティトランスのスケヌリングの難しさに぀いおお話したす。







このコンポヌネントをさらに深く掘り䞋げお、それが䜕で構成されおいるかを芋おみたしょう。ここでは、問題が発生する盎前のシステムの状態を確認できたす。この間ずっず、アクセシビリティトランスフォヌマヌはオンラむンシネマの超高速開発の道に沿っお動いおいたす。䜕䞇もの映画やテレビシリヌズの可甚性を確保するために、たず第䞀に、新しい機胜を迅速に立ち䞊げるこずが重芁でした。



巊から右に行くず、CMSがありたす。これは、第3の通垞の圢匏ずEAVのリレヌショナルデヌタベヌスです。私たちの䞻芁な゚ンティティが保存されたす。次はスナップショットロヌダヌです。さらに、関連デヌタを定期的に受信するスナップショットゞェネレヌタヌは、それをフィルタヌ凊理しお、スナップショットストレヌゞに远加したす。これは実際にはSQLダンプです。さらにリク゚ストプロセッサむンスタンス内で、スナップショットロヌダヌは定期的に新しいデヌタを受信しお​​H2にむンポヌトしたす。 H2は、DBMSの基本機胜を実装する、Javaで蚘述されたメモリ内デヌタベヌスです。぀たり、ク゚リむンタヌプリタヌ、ク゚リオプティマむザヌ、およびむンデックスがありたす。



実際、これはたさに、SQLク゚リを蚘述し、非正芏化された゚ンティティをすばやく簡単に結合できるため、オンラむンシネマの新しい機胜を䜜成する柔軟性を提䟛するコンポヌネントです。



H2は、コピヌオンラむトモデルで曎新されたす。スナップショットロヌダヌは、新しいデヌタベヌスむンスタンスを取埗し、それを蚭定したす。そしお、充填埌、ガベヌゞコレクタヌを䜿甚しお叀いものを凊分したす。



H2ず同時に、耇合゚ンティティずその䞊のむンデックスを含む゚ンティティキャッシュが発生したす。耇合゚ンティティは、基本的に、クラむアントからのより芁求の厳しい遅延芁求に察応するために、H2にあるものの非正芏化の継続です。キャッシュ゚ンティティは、コピヌオンラむトモデルを䜿甚しお同じ方法で曎新されるず同時に、新しいH2むンスタンスが発生したす。



システムの䞻な利点結合を䜿甚しお、新しい機胜を簡単か぀柔軟に远加できたす。コピヌオンラむトによっおデヌタを曎新するための比范的単玔なスキヌム。もちろん、欠点は、これらの゚ンティティを保存および曎新するために2倍のメモリが必芁になるこずです。これは、ガベヌゞコレクタヌによっお砎棄されるため、ナヌザヌ芁求に間接的に圱響したす。



たた、゚ンティティキャッシュを構築する際、むンデックス䜜成にはCPUリ゜ヌスが必芁です。たた、これは間接的にナヌザヌリク゚ストにも圱響したすが、CPUリ゜ヌスの競合が犠牲になりたす。これらの䞡方の点が合わさっお、メむン゚ンティティのデヌタ量の増加に䌎い、ク゚リプロセッサはCPUずメモリの䞡方の芳点から垂盎方向にスケヌリングする必芁があるずいう事実に぀ながりたす。



しかし、このシステムは、オンラむンで入手できる䜕䞇もの映画やテレビシリヌズに䟝存しおいたした。したがっお、長い間、これらの䞍利な点は受け入れられ、オンラむンシネマの新しい機胜を導入する柔軟性ず容易さずいう点で䞻な利点を掻甚するこずを可胜にしたした。



これらすべおが特定の時点たで機胜したこずは明らかです。この黄色いバスが私たちのアクセシビリティトランスであるず想像しおください。







非正芏化によっお耇補されたフィルムやシリアルをホストしたす。぀たり、それらは数䞇ありたす。そしお、ある停留所では、䜕十䞇ものミュヌゞックビデオやトレヌラヌを持ち䞊げお、なんらかの方法で配眮する必芁がありたす。搭茉されるず、非正芏化のためにそれらも増殖したす。内偎にいる人は瞮む必芁があり、倖偎にいる人は飛び蟌んで通り抜ける必芁がありたす。あなたはこれがどのように起こるか想像するこずができたす。技術的には、珟時点では、むンスタンスのメモリ容量は数十ギガバむトに増加したした。ガベヌゞコレクタヌを䜿甚しおキャッシュを構築し、叀いむンスタンスを砎棄するには、いく぀かの仮想コアが必芁でした。たた、デヌタ量が劇的に増加したため、この手順党䜓で、新しいコンテンツを公開するのに数十分かかるずいう事実に぀ながりたした。







技術的には、ク゚リプロセッサクラスタヌでCPU䜿甚率が確認されおいたす。塹壕数千RPSのオヌダヌのクラむアント芁求の凊理ず䞘では、同じ数千RPSに加えお、スナップショットの同じロヌドずガベヌゞコレクタヌを䜿甚したそれらの廃棄。䞋の2぀のグラフは、コンテナでのCPU埅機です。スナップショットをダりンロヌドしお廃棄した瞬間にも、それらが珟れ始めおいるこずがわかりたす。







これらのミュヌゞックビデオずトレヌラヌに察応し、拡匵を続けるために、アクティブおよびパッシブリク゚ストプロセッサむンスタンスを導入したした。実際、これは1レベル䞊のコピヌオンラむトの転送です。これで、コンテナにアクティブむンスタンスずパッシブむンスタンスの䞡方がありたす。パッシブは新しいH2ず゚ンティティキャッシュを準備し、アクティブは単にナヌザヌの芁求を凊理したす。したがっお、ガベヌゞコレクションずその䞀時停止がナヌザヌリク゚ストの凊理に䞎える圱響を軜枛したした。しかし同時に、それらは同じコンテナ内に存圚するため、スナップショットのロヌドずキャッシュの構築はCPUリ゜ヌスをめぐっお競合し、ナヌザヌ芁求ぞの圱響は䟝然ずしお存圚したす。



さらに、サむトごずのパヌティショニングを導入したした。これにより、これらすべおの新しいタむプのコンテンツが必芁ずされないサむトのメモリが削枛されたした。たずえば、これにより、オンラむン映画通はミュヌゞックビデオや予告線をダりンロヌドせず、圱響を枛らすこずができたした。しかし同時に、すべおのコンテンツにアクセシビリティを提䟛する必芁があるサむトの堎合、もちろん䜕も倉わっおいたせん。



したがっお、スキヌムの長所ず短所は以前ずほが同じたたでした。しかし、パヌティショニングにより、CPUずメモリの垂盎スケヌリングがサむトに移動し、これにより䞀郚のサむトはスケヌリングを継続できたした。以前のコンテンツ公開スキヌムず比范しお、これはたったく倉曎されおいたせん。通垞、同じ数十分の時間がかかったので、それを最適化する方法を探し続けたした。







その時たでに私たちは䜕を理解しおいたしたかそのオンラむンシネマク゚リは、DBMS機胜のごく䞀郚を䜿甚したす。ク゚リむンタヌプリタヌずオプティマむザヌは、時間の経過ずずもに゚ンティティキャッシュに瞮退したした。アクセシビリティの定矩は広く普遍的であるこずに気づきたした。ク゚リは、コンテンツナニットたたはリストの可甚性を理解し、この可甚性に属性を远加する必芁があるずいう点で異なりたす。䞀般に、これは本栌的なDBMSなしで実行できたす。



そしお第二に、耇合キヌの䞀郚は䜎い基本パラメヌタです。数十の囜があり、数癟、数十のサむトの制限があり、サブスクリプションはごくわずかです。ほずんどの堎合、完党な非正芏化は必芁ありたせん。これらの䞡方の調査結果により、ナヌザヌの芁求に迅速に察応しながら、よりコンパクトで非正芏化されおいないメモリ内衚珟に移行するこずができたした。







スラむドでは、可甚性トランスフォヌマヌv1からv2ぞの移行を瀺しおいたす。これは、新しいアクセシビリティスキヌムの抂略図です。ここでは、耇合キヌは実際にはコンテンツIDキヌになりたす。そしお、アクセス可胜性は、物理的たたは論理的に、囜、サむト、およびサブスクリプションのリストによっお可甚性を決定するこずになりたす。



したがっお、メモリの倧郚分を占める目に芋えない非キヌの残りの量を枛らし、同時にメモリの量を枛らしたす。







ここでは、新しいアクセシビリティトランス回路に移行するプロセスを確認したす。 Netflix Hollowは、基本゚ンティティのプロバむダヌおよびむンデクサヌの圹割を果たし、ドメむンサヌビスは、さたざたなサむズの耇合゚ンティティのアセンブリをその堎で収集したす。これが機胜するのは、基になる゚ンティティがただ非正芏化されおおり、ビルド時に結合の数が最小限であるためです。䞀方、可甚性の決定は単玔で安䟡なサむクルに垰着し、難しいこずではありたせん。



同時に、Netflix Hollowは、デヌタの曎新䞭ずそれらぞのアクセス䞭の䞡方で、CPUずガベヌゞコレクションの負荷を保存し、かなり慎重に凊理したす。これにより、CPU䜿甚率グラフに衚瀺された䞘を枛らし、蚱容可胜な最小倀に保぀こずができたす。さらに、スナップショットずそれらぞの差分の圢匏でハむブリッド配信スキヌムを実装するため、新しいコンテンツの公開速床を最倧数分たで向䞊させるこずができたす。



以前のスキヌムの利点のほずんどが維持されおいるこずは明らかです。メモリ内のデヌタを曎新するメカニズムは、リ゜ヌス䜿甚率の点でよりシンプルで安䟡になっおいたす。パヌティションごず、サむトごずの垂盎スケヌリングも特定の゚ンティティのスケヌリングで補完され、珟圚は安䟡になっおいたす。たた、Snapshotコピヌの曎新のオヌバヌヘッドを削枛したため、CPU党䜓で真に氎平方向のスケヌリングが行われたした。



このスキヌムの欠点は、゚ンティティの構成にサヌビス間呌び出したたは個別のサヌビスが必芁になるこずです。たた、デヌタが䜿甚されるすべおのドメむンサヌビスに保存されるようになったため、基本゚ンティティレベルでのデヌタの重耇がただありたす。ただし、Netflix HollowはH2よりもコンパクトにデヌタを栌玍し、H2はオブゞェクトを含むHashMapよりもはるかにコンパクトにデヌタを栌玍したす。したがっお、このマむナスも間違いなく蚱容できるず芋なされ、楜芳的に未来に目を向けるこずができたす。







このスラむドは、氎道氎でも楜芳的に充電するこずができたす。新しい囜ぞのスケヌリングは、もはやメモリからの乗数ではなく、新しいサむトぞのスケヌリングでもないためです。パヌティショニングにより、氎平スケヌリングに倉換されたす。



さお、新しいナヌザヌを拡倧し、オンラむンシネマの機胜を拡匵するこずは、負荷の増加に垰着したす。それを提䟛するために、必芁な数の軜量CPUバりンドサヌビスを立ち䞊げる準備ができおいたす。䞀方で、私たちはアクセシビリティの分野で十分な知識を蓄積しおおり、自信を持っお新しい挑戊を楜しみにしおいたす。この知識の䞀郚を皆さんず共有できたず思いたす。枅聎ありがずうございたした。



All Articles