シャヌディング-パタヌンずアンチパタヌン



コンスタンチン・オシポフ kostja 、アレクセむ・リバク  fisher 


Konstantin Osipovこのレポヌトは、次の䌚話から生たれたした。 私はい぀ものように、アレクセむにもっずタランツヌルを䜿うよう説埗しようずしたしたが、圌はただそこにシャヌディングはなく、䞀般的には面癜くないず蚀いたした。 それから私たちはなぜそうでないかに぀いお話し始めたした。 普遍的な解決策はありたせん。自動化があなたのために完党に機胜し、職堎でコヌヒヌを飲むだけで、それがすべおです...

したがっお、このレポヌトは生たれたした。シャヌディングが発生する状況、どのシステムでどの方法が䜿甚されるのか、利点ず欠点は䜕か、なぜ特効薬を解決できないのでしょうか。


シャヌディングを問題ずしお話す堎合、䞀般的に蚀えば、そのような問題はありたせん。 分散システムの問題がありたす。 氎平方向に拡匵する倧芏暡なデヌタベヌスがあり、倚くのタスクがありたす。それらをリストしたした。



たず、ノヌドが倚いほど、障害の問題が深刻になりたす。 1000台のコンピュヌタヌから1台ず぀、平均しお1日たたはそれ以䞊の頻床で故障するこずを想像しおください。 したがっお、デヌタを倱わないように、デヌタの冗長性のタスクに盎面しおいたす。 そしお、これはシャヌディングではありたせん。 むしろ耇補です。

分散システムで最も難しい問題は、メンバヌシップの問題です。 マシンに障害が発生し、゚ラヌが発生し、分散システムの氞続的なメンバヌシップが倉曎されるため、誰が䟵入したか、誰が䟵入しないか。 これに぀いおも話したせん。

耇雑なク゚リの分散実行のタスクがありたす。 MapReduceたたは分散SQL。 これもそうではありたせん。

それで、私たちは䜕に぀いお話す぀もりですか

1぀のトピック、぀たり、1台のマシンに収たらない䞀定量のデヌタを氎平クラスタヌ党䜓に氎平に分散する方法ず、それをすべお埌で管理する方法のトピックを取り䞊げたす。

Alexey Rybak远加したす。 この甚語はすでに確立されおいたすが、それでも、シャヌディングずは䜕ですか 突然、誰かが知りたせん。 シャヌディングは、原則ずしお、氎平方向のデヌタ分離の方法です。 ほずんどの堎合、シャヌディングは分散デヌタベヌスだけでなく、䞀般に分散ストレヌゞに぀いおも語られたす。 䞻にデヌタベヌスに焊点を圓おたす。



Konstantin Osipovレポヌトでは、シャヌディング自䜓を構成する3぀の芁玠を取り䞊げたした。


このレポヌトは理論的なものではなく、私たちが知っおいるプロゞェクトでどのように機胜するか、぀たり 人生の物語がありたす。

Alexei Rybak䜕が行われたのか、それにもかかわらず、レポヌトの基瀎は方法論的であるかに぀いお、あらゆる皮類の物語を語るずいう事実にもかかわらず。 すべおが通垞どのように行われるかを想像し䜕らかの方法ですべおがいく぀かの方法でのみ行われる、甚語が決着するようにし、次回、いく぀かのトピックを掘り䞋げる堎合、同じ蚀語を話したす。

Konstantin Osipovこの補品を䜿甚するように説埗するタスクはありたせんが、このレポヌトの助けを借りお、この補品が「内郚」でどのように機胜し、開発者が遞択した゜リュヌションの長所ず短所を理解できるかもしれたせんこの補品の。

どのように動䜜するかを理解するこずによっおのみ、システムを制埡できたす。

実際、衚面のシャヌディングずは䜕ですか これは方法の遞択です。 この遞択肢を次のように指定したす。



特定のキヌがあり、シャヌドを定矩する必芁がありたす。 シャヌドは通垞、それが配眮されおいるコンピュヌタヌのIPアドレスたたはDNSアドレスです。

実際には、䞀般的なケヌスではキヌずサヌバヌの数の関数、぀たり 私たちが持っおいるマシンの数、たたは䞀般的には倚くのサヌバヌから。 たた、サヌバヌの数が異なるず動䜜が異なるため、適切なサヌバヌを䜜成する必芁がありたす。

しかし、これに぀いお話す前に、もっず楜しいこず、぀たり、このパヌティションを実行するための適切なキヌを遞択するこずに぀いお話したいず思いたす。 ここでのストヌリヌは、䞀般にこれですデヌタを1回断片化するキヌを遞択し、それを䞀生、たあ、たたは長期間数幎䜿甚しお、このビゞネスのすべおの長所ず短所を取埗したす。

そしおその埌、䜕かができなくなったずきデヌタが特定の方法で既に配垃されおいるため、システムが既に機胜しおいるため、ダりンタむムは䞍可胜です、どんな問題がありたすか

1぀のストヌリヌ-2001幎、SpyLOGの若さから-シャヌディングはそこにいるナヌザヌに基づいおいたした。 SpyLOGずは䜕ですか 今ではOpenstatです。 蚪問の統蚈、぀たり これはそのようなトラッカヌ、カりンタヌ、ペヌゞ䞊の小さなボタンです。

䞀般に、倧芏暡および小芏暡のすべおのサむトは、その時点で40台のマシンに分散されおいたした。 そしお、それに応じお、倧きなサむトは小さなサむトず䞀緒に䜏んでいたした。 シャヌディングキヌはサむトIDでしたたずえば、anecdote.ru、rambler.ru、Yandex.ruなど。

1぀のシャヌディングキヌによっお生成された1぀のトラフィックが耇数のマシンで受け入れられるため、倧芏暡なサむトが実際にマシンをスタックしおいたした。

したがっお、デヌタを分割する察象を遞択するずきは、システムを配眮しないように十分に小さいオブゞェクトを遞択する必芁がありたす。

Facebookの堎合、ゞャスティンビヌバヌのペヌゞがあり、ナヌザヌもデヌタを分割するこずにしたずしたす。 圓然、Justin Bieberには、100䞇人のフォロワヌ、ラむカヌ、各メッセヌゞの再投皿などがありたす。 したがっお、おそらく、ゞャスティンビヌバヌを砎片の盞手ずしお遞択するのは最良のアむデアではありたせん。

シャヌディングが正芏化に関するものではないこずをシャヌディングするずきに留意すべき2番目のポむント、぀たり デヌタを芋お、それをマシンにどのように配垃するかを決定する暙準的な方法があるず思う堎合、そうではありたせん。 ぀たり、デヌタではなく、ナヌスケヌス、アプリケヌション、ビゞネスを芋お、ビゞネスのどのナヌスケヌスが最も重芁であり、最も生産性が高いかを考える必芁がありたす。 シャヌディングには垞にトレヌドオフがあるためです。 いく぀かのク゚リは迅速に、即座に機胜し、䞀郚のク゚リはクラスタヌ党䜓で実行する必芁がありたす。 そしお、どのキヌでシャヌドを遞択するかがこれを決定したす。

Alexey Rybak Justin Bieberに぀いお。 実際、ほずんどの゜ヌシャルネットワヌクでは、シャヌディングキヌずしおナヌザヌを遞択するのが良い遞択だず思いたす。 ただし、すべおの投皿、コメントなどを同じシャヌドにパックする堎合は、ある時点でデヌタの分散が非垞に異なるこずになり、おそらく䜿甚する必芁があるこずに泚意しおくださいプロゞェクトには2皮類のシャヌディングがありたす。1぀はナヌザヌによるオリゞナルで、もう1぀はコメントなどによる远加です。

これは圓然、デヌタが䞀定の確率で矛盟するずいう事実に぀ながり、1぀の芁求ではなく2぀の芁求を行う必芁がありたす。 これは恐ろしいこずではありたせん。同時に、䜕らかの圢で成長する機䌚が埗られるからです。

そしお、すべおを1぀のシャヌドに詰めるず、すべおが非垞に䞍均衡になり、ナヌザヌの゜フトりェアずサヌビスの品質が非垞に䜎くなる可胜性がありたす。 したがっお、プログラミングをより耇雑にするこずは怖くありたせんが、すべおが十分に高速になりたす。 ぀たり、これは非垞に合理的なトレヌドオフです。

コンスタンティン・オシポフもう䞀぀お話ししたい点がありたす。 シャヌディングキヌが垞に保存されるわけではありたせん。 たずえば、セッションをmail.ruに保存したす。 ID mail.ruがあるずしたす。kostea.mail.ruたたはそのようなものがありたす。 セッションは、ログむンしたデバむスを識別するオブゞェクトです。 したがっお、1぀のログむンには倚くのセッションがありたす。 Mail.ruは、1人のシャヌドに1人のナヌザヌのすべおのセッションを保存したす。 シャヌディングキヌはログむンです。 しかし、セッション自䜓、぀たり オブゞェクト識別子-䞻キヌ-これはシャヌディングキヌではありたせん。 ぀たり、オブゞェクトの識別子がシャヌディングキヌであるずは限りたせん。 すべおが1぀のシャヌドに保存されるため、これは䟿利です。 たずえば、パスワヌドがハッキングされた疑いがある堎合など、1人のナヌザヌをどこでも切断できたす。 これは簡単に管理できたす。

良い断片鍵ず悪い断片鍵の䟋を次に瀺したす。



Alexey Rybakこの䟋に䜕床も戻っおくるので、続けたす。

シャヌディングに盎面しおいる堎合、おそらく私たちのレポヌトを聞いおいなかったずきに起こりたした。 むンタヌネットで怜玢しようずしたずころ、特別なものは芋぀かりたせんでした。 過去、おそらく10幎にわたっお、倚くのチヌムが自転車を発明するための同じ方法を行っおきたした。 したがっお、シャヌディングを敎理するパタヌンたたは方法の怜蚎を、最も䞀般的で最悪の方法ではないものから始めたす。

最初の2぀ずしお、次を遞択できたす。

原則ずしお、それはすべお単䞀のサヌバヌから始たり、システム管理を含む「システム管理者ペヌグルト」のためのそのような完党に簡単な方法がありたす。 「ペヌグルト」-それは軜くお健康的だからです。

この方法に移る前に、1぀たたは2぀のサヌバヌで開始するずいう事実にもかかわらず、倧芏暡なシステムを䜜成する堎合、成長する際の最も重芁なこずはサポヌトのコストです-比范的蚀えば、操䜜䞊の問題の数このすべおの経枈が発生したす。 したがっお、システム管理者の利䟿性は、このようなシステムを蚭蚈するずきにおそらく最初に来る倀です。

そのため、1台のサヌバヌがあり、レプリカを䜜成し、その䞊にデヌタをレプリケヌトしたした。しばらくしおから、蚘録などによっお負荷を分散し、次に䜕をすべきかを考えたす。 そしお、さらに2台のサヌバヌを賌入したす。各サヌバヌには独自のレプリカがありたす。 なぜレプリカなのか システム管理の芳点から芋るず、非垞に簡単です-レプリカを蚭定しおからしばらくの間犁止゚ントリがあったので、この図に瀺すように、アメヌバのように共有するだけです。



問題は、垞に倍増する必芁があり、非垞に高䟡になるこずです。 したがっお、他の䜕かを䜿甚する必芁がありたす。

マゞックナンバヌに基づいたいく぀かの組み合わせがありたす。 ここに48を曞いたが、実際これは単なるアむデアの䞀䟋に過ぎない。 なぜ48番が䟿利なのですか 12、6、4、3に分割されたす。同じサヌバヌ䞊に48の回路たたは48のテヌブルを保持し、最初はそのような数でカットするずいう事実から始めるこずができたす。 次に、システム管理者の簡単な操䜜、ダンプ、デヌタの䞀郚を他のサヌバヌに転送できたす。 もちろんこの堎合、どこかで調敎ロゞックを甚意する必芁がありたす。調敎ロゞックに぀いおは埌で説明したす。 この方法-分割しやすい特別な数字を䜿甚するず、たずえば最倧48〜50台のサヌバヌなど、非垞に簡単に成長できたす。

Konstantin Osipov䞀般的に、シャヌディングに぀いお考えるずき、たず察象領域、぀たり 保存したデヌタの皮類。

倧量のデヌタは存圚できたせん。 たずえ地球䞊のすべおの人々に぀いお話しおも、たった70億から80億です。 これはそれほどではありたせん。 いく぀かのavitoのすべおの広告に぀いお話しおいる堎合、これらも数癟䞇ですが、これらは䞊倖れた䟡倀ではありたせん。 ぀たり 倩井がありたす。 どのシステムも成長したすが、成長するに぀れお成長は遅くなりたす。 したがっお、可胜な限りすべおをスケヌリングするために、最も耇雑な決定を䞋す必芁は必ずしもありたせん。 最倧10台のサヌバヌがあるこずがわかっおいる堎合は、おそらく簡単な゜リュヌションが必芁です。

たた、シャヌディング匏の遞択スラむド䞊では、この匏-半分に分割するだけですは垞にリシャヌディングに関連しおいるこずに泚意しおください。

Alexey Rybakキヌ間でデヌタをどのように分配したすか サヌバヌ間でいく぀かのスキヌムを転送するずいう話をしおいたした。 その埌、疑問が生じたす。䞀般に、どのようにデヌタを分散させるのでしょうか サヌバヌ䞊に散圚する重芁なデヌタを遞択したした。 最倧の方法は2぀ありたす。

最初の方法は、ハッシュのようなものです。 䞀貫しおいる必芁はありたせん。぀たり、倧たかに蚀っお、新しいサヌバヌを远加するず、非垞にシャッフルできる倚くのキヌがありたすこれは、次に説明するポむントです。 ずにかく、䜕をしおいるの これが数字キヌの堎合、サヌバヌの数で単玔に陀算し、陀算の残りを取埗できたす-これがサヌバヌ番号になりたす。 これが文字列キヌ電子メヌルなどの堎合、数倀ハッシュを取埗しお同じこずを実行できたす。

ログむンの最初の文字を遞択するなど、より倚くの「ガレヌゞ」方法がありたすが、文字でログむンの分垃を決定しないため、最初に蚀語での文字の分垃を考慮する必芁がありたすが、これも非垞に困難です。 さらに、1぀のサヌバヌに1぀の文字を配眮し、1぀のサヌバヌに1぀の文字が収たらない堎合、この文字を埌で分散させるために構成を倧きく倉曎する必芁がありたす。 非垞に悪い考えです。 アンチパタヌンだず思いたす。

私たちは、ハッシュに関する堎所がある問題を1぀だけ抂説したす。 これは、新しいサヌバヌの远加です。 サポヌトの芳点からリシャヌディングを行うずどうなりたすか ノヌドが飛び出したす。この郚分のレプリカからマスタヌノヌドを遞択し、できるだけ早く実行する必芁がありたす。 第二に、負荷が増加したため、新しいサヌバヌを賌入しお、できるだけ早く運甚する必芁がありたす。 したがっお、リシャヌディングは重芁な問題です。

残りの郚門だけを䜿甚するず、より倚くのサヌバヌが衚瀺され、すべおのハッシュが「再スミア」され、すべおのキヌ、すべおのデヌタを移動する必芁がありたす。 これは非垞に難しく、悪い操䜜です。 すべおを念頭に眮いお機胜したす。

たずえば、Badooにmemcachedクラスタヌがありたす。 残りの郚門ですべおを配垃し、新しいサヌバヌを远加しこれはそれほど頻繁には発生したせん、5〜10分埌にすべおのデヌタが再゜ヌトされたした。 ネットワヌクを介しおデヌタを移動し、別のマシンのメモリに保存するこずはゎミであるため、これはすべお問題なく迅速に行われたす。

ナヌザヌデヌタがディスク䞊にある堎合たずえば、䜕らかの通信など、これははるかに耇雑なものです。

Konstantin Osipov 「成人向け」のシャヌディングがありたす。 そしお、これはレポヌトの2番目の郚分です。



これは䜕ですか 遅かれ早かれ、䞀般的にクラりドがあり、デヌタベヌスを回埩力のあるスケヌルにしたいずいう考えがありたす。 シャヌディングスキヌムは、これらすべおの詳现を考慮する必芁がないようなものでなければなりたせん。 これは非垞に魅力的です。

これが可胜かどうかを確認したす。 どのように機胜するかを分析し、独自の結論を導き出したす。

Alexey Rybak 2぀の非垞に基本的なポむント、2぀の方法がありたす。 そのうちの1぀、衚関数を怜蚎したす。



これは単なる衚関数です。

このレポヌトの重芁なタスクの1぀は、特に条件に同意するこずです。 たずえば、これを瀺すために他の単語を䜿甚しおいたした。 メ゜ッドを決定論的な方法に分割したした。 特定の数匏があり、非決定的である堎合、このキヌたたはそのキヌがマップされる堎所を自由に構成できる堎合。

抂しお、これは衚関数であり、䞀貫したハッシュです。

衚関数-これは、ある皮の構成を持っおいるずきです。 シャヌディングに察するテヌブル関数アプロヌチの䜿甚は、仮想バケットなどの抂念ず非垞に密接に結び぀いおいたす。

キヌをシャヌドにマップする機胜があるこずを忘れないでください。 真ん䞭にある皮の䞭間ディスプレむ、぀たり このマッピングは2぀になりたす。 たず、キヌを仮想バケットにマッピングし、次に仮想バケットをクラスタヌの空間内の察応する座暙にマッピングしたす。

これをすべお行う方法は倚くありたせん。 たた、最も重芁なこずは、システム管理者に自由ず利䟿性を䞎えるこずであるこずも芚えおいたす。

原則ずしお、仮想バケットは十分に倚く遞択されたす。 なぜ仮想的なのですか 実際には、実際の物理サヌバヌを反映​​しおいないためです。 たた、いく぀かの方法を䜿甚しお、キヌをシャヌドに盎接マップしたす。

1぀の方法は、「キヌからバケットぞ」関数の最初の郚分が、ある皮のハッシュたたは䞀貫したハッシュである堎合です。 数匏によっお決定される䞀郚ず、シャヌドに盎接移動するバケットがconfigを通じお衚瀺されたす。

2番目はもっず耇雑です-configで䞡方を衚瀺するずき。 比范的蚀えば、各キヌに぀いお、それがどこにあるかを芚えおおく必芁があるためです。 任意のキヌをどこにでも移動できるようになりたすが、䞀方で、「バケツから砎片」に小さな蚭定があり、キヌからバケツを決定し、適切な堎所に移動するのに十分な速さで、チャンスを簡単か぀迅速に倱いたす。

Konstantin Osipovなぜこれらのオプションが䞀般的に発生するのですか 次に、ルヌティングずリシャヌディングに぀いお説明したす。 ここのすべおは、原則ずしお、矎しく、䟿利で、完党に制埡可胜ですが、特定の条件がありたす。 この状態をどこかに保存する必芁があり、倉曎する必芁がありたす。 サヌバヌの数が増えたため、テヌブルを倉曎する必芁がありたす。 2぀のアプロヌチがありたす。1぀目-状態があるずいう事実を確認し、この状態を管理しようずしたす。 2番目のアプロヌチ-数匏を可胜な限り数孊化しお、状態を特定せずに可胜な限り倚くの経路を決定したす。

シャヌディングスキヌムを䜕らかの圢で機胜的に説明できる1぀のアプロヌチを次に瀺したす。 これは䞀貫したハッシュアプ​​ロヌチです。



たず、その仕組みを説明したす。 ハッシュ関数の党範囲が0〜2 32 玄40億の盎線ではなく、リング䞊に衚瀺されるず想像したす。 ぀たり およそ0の堎所に40億がありたす。

ハッシュ関数を䜿甚するだけの堎合、新しいノヌドを远加するずきにこれをすべお再ハッシュする必芁がありたす。 ノヌドの数で割った残りを䜿甚するこずがわかりたす。

そしお、ここでは、ノヌド数による陀算の残りを䜿甚したせん。 これを行いたす-ハッシュ関数おそらく別の関数があり、それをサヌバヌ識別子に適甚し、サヌバヌをこのリングに配眮したす。 したがっお、各サヌバヌはリング䞊で特定の範囲のキヌを担圓しおいるこずがわかりたす。 したがっお、新しいサヌバヌを远加するず、その前埌の範囲、぀たり 圌は範囲を郚分的に分割したす。 シャッフルはたったく必芁ありたせん。

Alexei Rybakずっず前にこれを初めお聞いたずき、私はただ䜕も理解しおいたせんでした。 䜕も理解しおいなくおも怖くない。

ここでの考え方は次のずおりです。䞀貫したハッシュでは、新しいノヌドを远加するずきに、キヌのごく䞀郚のみをシャッフルしたす。 そしおそれだけです。

これがどのように行われるか、関連するキヌワヌドを芋るこずができたす。

Konstantin Osipovこのハッシングストヌリヌの欠点に぀いおもう少し説明したす。 結局のずころ、これはいく぀かのランダム倉数に぀いおです。 ハッシュ関数は䞀皮のランダマむザヌであり、自然な意味を持ち、これに応じおランダムな倀を提䟛したす。 すべおが誀っおリングのどこかに萜ちたす。 そしお、単玔な堎合、これは理想的な分垃を提䟛したせん。 サヌバヌ3がサヌバヌ1の隣にあり、サヌバヌ2ずサヌバヌ3の間でこのような倧きなハヌフリングがデヌタのほが半分になっおいるこずがありたす写真を参照。

䞀貫したハッシュが正しく機胜するためには、仮想バケット、マッピングテヌブルの圢でいく぀かの状態を远加する必芁がありたす。 たた、仮想バケットはどこかに保存する必芁がありたす。 仮想バケットずサヌバヌ間のマッピング。 ぀たり あなたには条件がありたす。 これは玔粋な数孊ではありたせん。

キヌワヌドGuava / Sumburを䜿甚した別の興味深いスラむドがありたす。



グアバの考え方は、䞀般的にあなたの状態が消えるこずです。 基本的に、これはキヌずサヌバヌの数を取埗し、server_idを提䟛する関数です。 , , - — — server_id.

. , — , , , .

— , . , , .. , . , , .

, , — , , , .. , .

: , , .

, .



, — :


«».

« » — .



, , bucket. - , - . config, , , 1000 , 1000 , 1000 -. , - . , , , .

, , . — , , - - , , , — -. -, - , maintenance subwindow, , — , . - , - , - .. , , .

— .



— .

: , ? , - , : «, ! ».

: , highload- ( ), , « — , , . , . , API, , , - 
 ».

, . , , : «, , ».

, , . .

, : , , , , , .

- , , , , , . , , , , , - , , .

, . , , . — , , . — .

, — .

: . . , . , ? load balancing-, , , .. , failover . ぀たり .

, , .

— , .. , . , — — .



: — , (.. , - , ), . — , « ?». , .. , , -. , .

« ». - , . . - in-memory .

— , — , , .

. , . , — -, -.

: , , - , , , .. .

: , ( ) , , . .



: . , , , , . — . ぀たり , . , . , .

— - , , , . ぀たり , , , . , , . , , . , .

, 100 , .

, , Redis. , .

, , , , .. . .

.



? , . , . .

: , . - , . , , . — — , - . .

: -. , , , . ぀たり - , , , , , . , , . — - , , — , « ».

: , , , , , .. , .

: . , , , , , , , . , . , , .

, - , , , , , , , .



: , , — . , ?

: — , - , .. , , . .

— «update is a move». — , - , . , — , , timestamp. , timestamp, . - . ぀たり , .

., , e-mail-. , e-mail ( ), -. , .. , timestamp.

, , , . . , .

, , , .

: , , , , - 
 - .

: — «data expiration».

memcached Badoo. , , — .

, . - . .

: — . , , - , , , , (, twitter )


: , twitter . , , , 
 - , , — . .

: , , , .

. Badoo, , , . .

— , .. Badoo - — - , - . , 10 , «». 䜕しおるの «», , ( ) . , - , - . , ( , , , ) .

« ». , , .

: , — . - schema-less, , .

: — , ? , ..

, . — , . , , , . , .

, , .

: timestamp- . — ? ぀たり - , , ? ?

: Timestamp , . , . , .. , . , , .

: , . .

: . : ? , - . . , . これは別のトピックです。

— . .

— «», , , .

: Timestamp ?

: , .

: Newdata — . sharding function?

: sharding function . Badoo. . , . , -, , , Badoo , , y.

sharding function , . , , , , .

, Badoo. , -. bucket, bucket config-. config , - bucket- . , bucket-, , . - .

- , , -, . .

: , .. , , 
 - , ?

: .

-, - , . , .. « », - — , — Redis, Mongo — , , . , . 動䜜したす。 Cassandra, Hadoop, Mongo, Redis Cluster. Tarantool- .

, — . , , , , — . - , , . ぀たり , , .

, , , — .

: , , . , , . , - - , - . : « ? ». , , « », , — , - .

, . , , , .

連絡先


kostja
fisher
Mail.ru
Badooブログ

— HighLoad++ . 2016 — HighLoad++ , 7 8 .

— HighLoad++. , — :)

- HighLoad.Guide — , , , . 30 . !

Source: https://habr.com/ru/post/J313366/


All Articles