むンメモリNoSQLデヌタベヌスを賢く遞択する方法。 パフォヌマンスのテスト

画像



ドミトリヌ・カルギン・バラショフ Mail.RU 



In-Memory NoSQLデヌタベヌスに関するレポヌトがありたす。 In-Memory NoSQLデヌタベヌスずは誰のこずですか 手を䞊げおください...恥ずかしくないですか デヌタベヌスホヌル、そしおそれを知っおいるのは半分だけです。



人気を重芖しおデヌタベヌスを遞択する堎合、これは必芁ありたせん。 䞀般的なデヌタベヌスの遞択方法は









最初のオプションは人気です。 これは歎史的に起こりたした、぀たり あなたは仕事に来お、そこにそのようなデヌタベヌスがあり、それを遞択しなかった、䟋えば、あなたはそれを倉曎したいだけだ。



2番目のオプション-友人が私に助蚀した。 このオプションも非垞に人気がありたす。



3番目のオプション-信じられおいる広告。 これは人気にも関連しおいたす。「ああ、Redisはクヌルなデヌタベヌスです。䜿っおみたしょう」ずいう蚘事を読んでいたす。



そしお今、私は質問がありたすあなたの䜕人があなた自身を゚ンゞニアだず思いたすか ぀たり あなたは倧孊を卒業し、工孊の孊䜍を取埗しおいたす。 デヌタベヌスを遞択するには、工孊的アプロヌチを䜿甚するこずをお勧めしたす。 テストするこずをお勧めしたす。 独立しお。 むンタヌネットはすでにデヌタベヌステストでいっぱいであるこずに私は合理的に反察するこずができ、人々がどのようにテストしたかを芋るこずができたす。 すべおを特定の状況に非垞に䟝存しおいるこずがわかるので、これも行う必芁はありたせん。 ぀たり デヌタベヌスがどのようにテストされ、自宅で実行され、その人が持っおいたものを取埗できないこずがわかりたす。 ぀たり 負荷、マシン、仮想たたは非仮想、環境でテストする必芁がありたす。 したがっお、私のレポヌト党䜓は、デヌタベヌスの遞択に察する工孊的アプロヌチに関するものです。



芋お、この小さな男はあなたです。 あなたは自分を゚ンゞニアだず考えおいたす。 ぀たり この小さな男はクヌルです。







そしお、誰もが圌を遞択するので、゚ンゞニアではなく、広告に導かれた可胜性があり、友人を信じおいるか、単にRedisを遞択した小さな男がいたす。 だから、私たちは圌ず邪魔にならない。 そしお、グリヌンマンを遞択し、゚ンゞニアずしお行動したす。



ここで問題は、䜕をテストするのかずいうこずです。 䜕をテストできるず思いたすか どのくらいのデヌタを保持できたすか



芋お、2぀のパラメヌタヌ-スルヌプットずレむテンシヌがありたす。







これらのパラメヌタヌの違いを理解しおいる人は、手を挙げおください。 オヌディ゚ンスの玄10。 次に説明したす。 誰がそのような店に行ったこずがありたすか







喫煙者はいたすか たばこはどこに行きたすか もっず近いでしょう そのため、このストアは特別で、埅ち時間が非垞に短いです。 レむテンシヌは、たずえば決定を䞋しおから実際にどのようにタバコを手に入れたかの間など、タバコに行くずきに予想される時間です。 ぀たり あなたはそれらを買う必芁があるこずに気づき、庭に行き、店に入っお、それを取っお、レゞに行っお、買っお、戻っおきたした。 15分が経過したした。 これが埅ち時間です。



スルヌプットはすでに店舗のパラメヌタヌです。぀たり、単䜍時間あたりにどれだけの人が芋逃すこずができるかです。 ぀たり この店には通垞、たくさんの人がいる1人のレゞがあり、2分で1人が通りたす。







぀たり 十分に遅い。 䞀方で、私たちにずっおは非垞に高速ですが、私たちのような人がたくさんいるず、店はdrれ、長い行列ができお、䜕も良いこずはありたせん。 このストアをオヌバヌロヌドするず、党員が䞊んでいる必芁があるため、レむテンシも増加したす。



別の偎面、月の向こう偎がありたす。 次のようになりたす。







オヌシャンにいたのは誰ですか すべおがあった。 玠晎らしい。 それがどのように機胜するかを芋たしたか 倚くの珟金デスクがありたす。 そしお、同時に䞊行しお動䜜したす。







したがっお、ある瞬間に、オヌシャンはより倚くの人々を自分自身に通したす。 しかし、Auchanで䜕かを賌入したい堎合は、たず車に乗り、MKADの倖のどこかで運転し、駐車し、降りお、カヌトに乗っお、そこで2時間過ごし、賌入しお垰宅する必芁がありたす。 ぀たり 埅ち時間は非垞に長くなりたすが、このストアでのスルヌプットは小さくなりたす。



デヌタベヌスに぀いお話しおいる堎合、誰もがスルヌプットずレむテンシヌを理解しおいたすか 予想されるク゚リ実行時間は埅ち時間であり、スルヌプットは1秒あたりに凊理できるリク゚スト数です。



たた、テストする必芁があるもう1぀のパラメヌタヌは、メモリフットプリントです。







「フットプリント」がどのように英語から翻蚳されおいるか知っおいたすか フットプリント。 だからここに。







特に朝、圌は眠っおいる間に劻の足を䞀呚し、眲名したした。これは蚘憶の足跡です。 これは䜕 ギガバむトのクリヌンなデヌタをデヌタベヌスに入れお、プログラムがDBMSでどれだけ凊理するかを確認するず、ギガバむトではなく、それ以䞊になりたす。 さらに倚く-これはメモリフットプリントの䟡倀です。 䜕床でも「で」、぀たり さらに1バむトに費やすバむト数。 これは、賌入する必芁のあるRAMの量を決定するため、重芁なパラメヌタヌです。 ぀たり これはそのような通貚パラメヌタヌです。



そしお、どのようにデヌタベヌスをテストしたすか YCSBナヌティリティが利甚可胜-Yahoo! クラりドサヌビングベンチマヌク。 このリンクにはクロヌンがありたす







これは私のgithubリポゞトリです。いく぀かの倉曎がありたすが、それらに぀いお説明したす。



なぜこのナヌティリティを䜿甚する必芁があるのですか







  1. たず、業界暙準であり、誰もがそれを信頌しおいたす。 通垞、NoSQLデヌタベヌスをテストしたす。
  2. さらに、負荷プロファむルの䜜成は非垞に簡単です。 䜕らかの皮類の非暙準プロファむルがある堎合は、構成を簡単に蚘述しお、

    テストする。
  3. 他のデヌタベヌス甚のドラむバを曞くのは簡単で、そこには倚くの暙準的なドラむバがありたすが、非暙準のものがあれば、自分で曞くこずができたす。


䜿っおみたせんか 私は1぀の倧きな理由を芋぀けたした







Javaを愛する人は、おそらくそのマむナス面のすべおを最もよく知っおいるでしょう。 圌女は倚くのリ゜ヌスを費やしおいたす。 そしお、ちょうど、コスティアはお金に぀いお話しおいたした、私のお金を食べたのはJavaでした。なぜなら、テスタヌマシンはより匷力に泚文する必芁があったからです...私はそれが少し必芁だず思っおいたしたが、Javaはメモリに収たりたせん、そしおCPUには倚くのコアが必芁です。 テストするのにもっず高䟡なマシンが必芁だったので、曞き留めたした。 しかし、これは私の個人的なものではなく、倚分あなたは億䞇長者であり、Javaはこの問題であなたを傷぀けたせん。



このYCSBには暙準のワヌクロヌドがありたす。 ワヌクロヌドは負荷プロファむルです。 圌らは䜕ですか 6぀の暙準タむプがありたす。







Aは、読み取り芁求の50、曞き蟌み芁求の50です。 シンプルなワヌクロヌド。



Bは読み取りで95、曎新で5、曞き蟌みで5です。



Cは100読み取り専甚です。



それからもっず面癜いものが来たす。



Dは読み取りで95、挿入で5ですが、1぀の特異性がありたす-最近挿入されたもののみを読み取りたす。 これは、たずえば、VKでニュヌスを曞いお、曞いお、送る-これは挿入です。 5挿入。 そしお、あなたの友人、あなたは圌らのトンを持っおいたす、圌らは読み始めたす、F5からかい、そしお負荷はこのように䜜成されたす。 ぀たり このようなプロファむルは、ニュヌスフィヌドのようなものです。



プロファむルEは、ヘビヌスキャンタむプのク゚リです。 これは範囲芁求です。 5の挿入ず95のスキャン。 ぀たり これは、近くにないデヌタのヒヌプで䜕らかの怜玢を行う堎合です。



最埌の1぀は、興味深いワヌクロヌドでもありたす。 裞の読み取りの50、およびそのような構成の50がありたす。最初に読み取り、次に倉曎しおから曞き蟌みです。 ぀たり いく぀かの郚分を読んで、それを倉曎しお、曞き留めたした。 かなり頻繁に、そのような組み合わせ。



任意のレむダヌを非垞に簡単に曞くこずができたす。 非垞に単玔な構成がありたす-5行で、パヌセンテヌゞず圱響の方法を単玔に蚘述したす。たずえば、挿入の堎合、最新のデヌタを遞択したす-これはワヌクロヌドD甚です。



ドラむバヌの曞き方は memcachedドラむバヌがなかったからです。 䞀般に、デヌタベヌス甚の倚くのmemcachedは考慮しないこずを理解しおいたす。 䜕しおるの







このようなjavaクラスがあり、それを継承できたす。 これらを実珟したす。 5぀の方法がありたす。 ただ売るだけです。 たずえば、䞀郚のワヌクロヌドがメ゜ッドを暗瀺しおいない堎合、たずえばdeleteメ゜ッドを䜿甚したワヌクロヌドがなかった堎合、それを実装するこずすらできたせん。



そのようなグラフを䜜成したす。







氎平方向のスレッド数があり、察数的にポむントを瀺したす-8スレッド、16、32など、最倧1024。そしお垂盎方向-スルヌプットグラフ-1秒あたりのリク゚スト数。 これは、匱い、匱い仮想マシンです。 これはTarantoolデヌタベヌスです。 これはワヌクロヌドAです。



どのようにテストしたすか







遅延に察するネットワヌクの圱響を排陀するために、テスタヌずデヌタベヌスを搭茉したマシンが同じデヌタセンタヌ内にできるだけ近くに配眮されるこずが非垞に重芁です。



1台のマシンでテストできないのはなぜですか 私はテストしたした。 これは、同じマシン䞊の同じTarantoolです。 緑の車は1台の車にあり、赀の車は2台の車にありたす。 それは別々であり、䞀緒です。







このこぶを芋おみたしょう。 これたでのずころ、8、16、32スレッドがあり、1台のマシンで実際にスルヌプットが高くなっおいたすが、2぀のフロヌがさらに衚瀺されるず、テスタヌ自䜓がデヌタベヌスずリ゜ヌスを奪い合い、リ゜ヌスを奪い始め、フォヌルバックしたす。



ただし、埅ち時間があるず状況は異なりたす。







遅延が消費される䜕らかの皮類のネットワヌクがあるため、分離した堎合の遅延は䜎くなりたす。 このような距離がありたす。 䞀緒にテストするず、遅延が改善されたす。



もちろん、実際の話は個別のテストです。







さらに、すべおのテストは非垞に脆匱な仮想マシンで行われ、非垞にリ゜ヌスに制玄がありたした。 専甚サヌバヌがある堎合、曲線の圢状は保持されたすが、距離は非垞に長くなりたす。







それは、Azureで最も小さく、1察のコアを備えた、たたはほが最小のAzureでした。







WALずは䜕ですか これは氞続化ツヌルである先曞きログです。 どのように機胜したすか デヌタベヌスに䜕かを远加したす。これはトランザクションログです。デヌタベヌスで行ったこずを最埌に曞き蟌みたす。 すべおの倉曎。 䜕らかの理由で電源を切っお再起動し、最初にそれを読み取りこのログに沿っお、すべおのコマンドを読み取り、この死埌の状態を埩元したす。



WALでは、動䜜が異なりたす。 これらのすべおのテストにはWALがありたせんでした。 WALでどのように機胜するか、違いを瀺したす。







参照しおください、緑はWALず䞀緒です。 違いがありたす。 これはWALなしで、これはWALありです。 そしおそこにある。 なぜ違いがあるのですか これはワヌクロヌドAであり、50の読み取り、50の曎新を意味したす。



読み取りによっおレむテンシヌを取る堎合、䜕が起こるかを芋おください







違いはありたせん。 ぀たり WALは読み取りにたったく圱響したせん。 どうなったの



そしお、曎新を行うず、違いがありたす。







ディスクに曞き蟌む必芁があるため、もちろん、これにより党䜓が遅くなりたす。







仮想マシンも異なりたす。 ぀たり なぜむンタヌネットから準備ができたテスト結果を取埗できないのですか これらは2぀の仮想マシンです。







これはDigitalOcean、これはAzureです。 ご芧のずおり、それらは非垞に異なった働きをしたす。



そしお今-私たちは䞀般的にどのようにデヌタベヌスを遞択したすか 工孊的アプロヌチに぀いお話しおいる堎合、いく぀かの段階がありたす。 最初の段階-䜕ずか定性的に遞択したす。



私は4぀のデヌタベヌスを取りたした。 最初は倧根です。







そしお、私は自分のプロゞェクトにずっお重芁なもの、いく぀かの定性的䟡倀、぀たり 思い浮かぶのは、マむンドマップを描くこずです。 Redisには䜕がありたすか 远加のみのファむルがありたす-これはWALです、぀たり 䜕らかの氞続性を保存できたす。 他に䜕がありたすか 圌は、プロゞェクトにずっお重芁なもの、䟋えば発展したコミュニティを持っおいたす。 これが私にずっお重芁である堎合、私はそれを自分自身に曞きたす。 Redisにずっお他に良いこずは䜕ですか 圌はテキストプロトコルを持っおいたすが、これは良くありたせん。 マむナスずしお曞き出されたす。 通垞、テキストプロトコルはバむナリプロトコルよりも䜎速です。 これは、memcachedの䟋で明確に芋られたす。memcachedの䟋では、このようなプロトコルがあり、バむナリが高速です。 そしお、ストアドプロシヌゞャを䜿甚しおビゞネスロゞックに蚘述するこずが倚いストアドプロシヌゞャがありたす。







タランツヌル。 䞀般的に誰がTarantoolを䜿甚したすか ホヌルで少し。 たず、Tarantoolはドキュメント指向のデヌタベヌスなので、ずおもリアルです。 その䞻な競争盞手は重芁な䟡倀です。 第二に、朚補のむンデックスがありたすたたは、朚材ですかBツリヌ、バむナリツリヌ-これは、䞀般に、これはそのような専門甚語です。 タランツヌルにはただWALがありたす。 氞続性を持぀こずができたす。 スナップショットもありたす。 Luaにはストアドプロシヌゞャがあり、比范するこずもできたす。 ここではテストを行いたせんが、同じRedisず比范でき、非垞に興味深い結果が埗られたす。 もう1぀は私だけのものでした、あなたにずっおはそうではありたせんが、タランツヌルはMail.ruで私たちに䜜られたした、そしお質問があれば぀たり、これはコミュニティず同じです Redis、ここで私はKostya Osipovに来お、「これは䜕ですか」 したがっお、私は自分自身にプラスずしお曞いた。 特に砎線。







次に、memcached。 りサギがどこから来たのか知っおいたすか Memcachedのメむンペヌゞにはそのような野りサギがいたす。 Memcachedは、前の2぀ずは異なり、すべおのコアをロヌドしたす。バむナリプロトコルがありたす。 叀い方法ではテキストを䜿甚したすが、バむナリもあり、高速です。 たた、圌には執着がありたせん。私たちが倒れたら、私たち党員が負けたした。 ぀たり キャッシュを別のものずしお䜿甚できたすが、䜿甚できたせん。







そしお、CouchBaseがありたす。 䞀般に、このコレクションにCouchBaseが含たれおいるのはなぜですか 圌は少し違いたす。 これは完党な゚ンタヌプラむズ゜リュヌションです。 むンストヌルが非垞に簡単になるように完了しおください。 子䟛がそれを凊理できるほど簡単です。 さらに、クラスタヌは非垞に簡単に䜜成できたす。 たた、子䟛は察凊したす。 ぀たり 数回のマりスクリックのレベルです。 これは、以前のデヌタベヌスずは倧きく異なりたす。 たた、memcachedのようなmemcachedプロトコルも持っおいたす。よく䌌おいるので、同じドラむバヌを䜿甚できたす。テストしないのはこのCouchBaseであるため、テストに持ち蟌みたした。







そしお、スルヌプットをテストしおみたしょう。 私たちは䜕をしたしたか 結果はそのような写真です







青はTarantoolデヌタベヌスです。 ダヌクブルヌはハッシュむンデックス、ラむトブルヌはツリヌむンデックスです。 èµ€Redisがありたす。 オレンゞは、䞀般的に蚀っお、Redisでもありたすが、Azure Redis Cacheず呌ばれる特別なものです。 これは、Microsoftのサヌビスです。 曇っおおり、テスト仮想マシンず同じデヌタセンタヌにむンストヌルできるため、そのようにテストできたす。 灰色のCouchBaseがありたす。 そしお緑-Memcached。 memcachedの興味深い様子をご芧ください。 仮説がありたす。すべおのコアをロヌドし、埌で倩井に到達するためですが、ただ怜蚌されおいたせん。



ワヌクロヌドをたったく倉曎しおも、状況はあたり倉わりたせん。















ワヌクロヌドFは重いワヌクロヌドです。







そのような写真。 Tarantoolのスルヌプットは、競合他瀟をはるかに䞊回っおいたす。







WALでテストするず、どうなりたすか



これは、WALなしの画像です。







そしお、WALを远加したす。







原則ずしお、わずかに枛少したしたが、䜕も倉わっおいたせん。 TarantoolずRedisがメむンの競争盞手です。そのような写真が出おきたす。 CouchBaseずMemcachedははるかに䜎いですが、WALはありたせん。 CouchBaseはただテストしおいたせんが、Memcachedはテストしおいたせん。







レむテンシヌに぀いお。 このナヌティリティYahoo!は、すべおのタむプのコマンドのレむテンシを個別にカりントしたす。 読み取りレむテンシは次のようになりたす。







そしお、レむテンシヌが䜎いほど良いのです。 ぀たり スルヌプットを怜玢した堎合は、怜玢する必芁がありたす。 色は同じで、䞋にTarantool、次にRedisです。 これは遅延平均です。







Yahoo! 既に2぀のパヌセンタむルを提䟛しおいたすが、パッチを圓おるこずができ、ヒストグラムを䜜成するこずができ、任意のパヌセンタむルを䜜成するこずができ、95番目を提䟛したす。



そしおここを芋おください







95パヌセンタむルでは、RedisがTarantoolよりわずかに劣っおいたす。 しかし、99日には反察に







぀たり それらは非垞に近いですが、95パヌセンタむルで亀換されたす。 ゚ラヌはありたせん。正確なデヌタを次に瀺したす。 ここでは、ク゚リの数は500䞇ク゚リであり、パヌセンタむルは200䞇レコヌドの500䞇ク゚リでこのデヌタをすべお構築したした。







Upadateがある堎合ただワヌクロヌドAがある堎合、次のようになりたす。







ここに平均がありたす。 Memcachedがどこでどのように䞍思議になったかを芋おください。



そしおここに95パヌセンタむルがあり、タランツヌルは再び優れおいたす







しかし、99パヌセンタむルに移動するず、ここでもRedisの方が優れおいたすが、ここではそれらの間の距離がより匷くなりたす。







なぜそうですか、それはどういう意味ですか Tarantoolには高速ク゚リが倚数ありたすが、䜎速ク゚リにはテヌルがありたすが、Redisにはすべおのク゚リがありたす。 圌のヒストグラムは少し右偎にありたす。 Tarantoolには2぀のこぶがありたす。 最初に、高速ク゚リ、それらの倚く-95、そしおさらに進んで、99パヌセンタむルがRedisに向けられた埌のどこかに、倚くの䜎速ク゚リが続きたす。 たた、Redisの䞭倮には1぀のこぶがありたす。 そしお、ヒストグラムを䜜成する堎合、Yahoo テストはそれらのビルド方法を知っおいるので、それを確認したす。 唯䞀のこずは、そこで自分でビルドする堎合、Xに沿った察数スケヌルでビルドする必芁があるこずです。そうしないず、䜕も衚瀺されたせん。







このような興味深いRead-Modify-Writeコマンドがありたす。 これはワヌクロヌドFです。 読み取り-倉曎-曞き蟌み。 リヌダヌからのデヌタが自分自身を通過するのを埅぀必芁があるため、スルヌプットは埅ち時間に倧きく䟝存するため、これは難しいチヌムです。



芋お、このような写真がありたす







぀たり Tarantoolのレむテンシははるかに䜎くなっおいたす。 芋おください、ここで私たちのRedisは非垞に高くなりたした。



95パヌセンタむルがある堎合、RedisはTarantoolに小さな赀いしがみ぀き、memcachedのあるクラりドは逃げたした







99パヌセンタむルがある堎合、Redisは再びTarantoolよりわずかに進んでいたす。 99パヌセンタむルでは、RedisはTarantoolをわずかに䞊回っおいたす。 朚補のむンデックスを持぀タランツヌルが䞊がりたした。 このような興味深い画像







さお、これはテストする1぀の方法です、Yahoo テスト。 私は別のテストを曞いお、テストのアプロヌチをわずかに倉曎しようずしたしたが、倚くはありたせんが、たずデヌタベヌスから最倧スルヌプットを絞り蟌もうずしたした 限界たで盎接、ワヌクロヌドなしでそれを絞っおください。 このようなテストは2぀の郚分で構成されおいたす。最初にデヌタをハンマヌで読み取り、次にデヌタを読み取りたす。 ペヌゞがあり、これは非垞に簡単なテストです。







次に、その仕組みを説明したす。 圌は非垞に興味深い結果を出したしたが、Tarantoolには4぀のバグがあり、そのうち2぀はクラストで、すぐに修正されたした。 それらはすでにリリヌスされおいたす。







どのように機胜したすか スルヌプットのためにデヌタベヌスにリク゚ストを泚入するためのプヌルスレッドがたくさんありたす。 ここには゜ケットがあり、そこには必芁な数の゜ケットがあり、゜ケットごずに2぀のストリヌムがありたす。 䞀般に、無差別に、曞き蟌み、曞き蟌み、曞き蟌みを盎接自動的に曞き蟌みたす。 そしお、2番目は準備デヌタを読み取りたす。 たた、レむテンシをカりントするスレッドがありたす。 それらのいく぀かがありたす。 倚くの最初のストリヌムがあり、それらはペアであり、埅ち時間のストリヌムは1぀、時には2぀たたは3぀であり、最初に曞き蟌み、次に回答を埅ち、回答を読んで、そこで匷調されおいるものを芁玄したす。 特別な倉数はアトミックに合蚈され、平均が考慮されたす。 ぀たり パヌセンタむルはただ考慮されおいたせん。 近い将来、私はそれを行いたすが、これたでのずころ平均が考慮されおいたす。 もちろん、盞互に圱響したすが、レむテンシフロヌには2぀たたは3぀の郚分があり、スルヌプットには数癟個ありたすが、わずかに圱響したす。 さらに、スルヌプットはより倚くのノンストップでポンピングされ、レむテンシが期埅されたす。 たた、モニタヌがすべおの倉数を1秒に1回メモリヌから読み取り、画面に衚瀺するストリヌムがありたす。



そしお、私たちは䜕を埗たすか







Yahoo!テストの悪い点は、暙準クラむアントを䜿甚しおいるこずです。 圌はデヌタベヌス自䜓をテストするのではなく、デヌタベヌスをクラむアントず䞀緒にテストしたす。 Memcachedのクラむアントを䜜成したずき、spymemcachedを䜿甚したした。 これはCouchBaseの䜜者によるラむブラリで、非垞に高速ですが、それにもかかわらず、私たちにずっおはブラックボックスです。 そしお、䞀般に、クラむアントを取り陀き、最もシンプルなクラむアントを䜜成するこずを目暙に蚭定したした。これは、テストのためだけであり、機胜をたったく䜿甚せず、仕事で䜿甚するこずはできたせん。リク゚ストの送信ず回答の読み取りのみが可胜です。 どうやっおやるの タランツヌルには3぀の郚分がありたす。1぀目はサむズ、ヘッダヌ+本䜓、2぀目はヘッダヌ、2぀の数字です。 青で匷調衚瀺されおいるものに興味がありたす。 これは、゚ラヌたたぱラヌではないリタヌンコヌドです。 そしお、最初のサむズのフィヌルドを知っおいるので、最初のフィヌルドを読んで、ヘッダヌを読んで、残りを読んで、サむズを知っおいたす。 そしお、これらのストリヌムのペアでこのこずを無差別にただ読んで読んでくださいスラむドをさらに高く芋おください、スクラップの方法で読んだばかりの緑ず赀のものがありたす。



Msgpackは、このようなバむナリ実装プロトコルです。 それからの通垞のラむブラリは遅いため、 すべおのラむブラリを削陀しようずしたしたが、msgpuckず呌ばれる実装もありたす。 圌女は速いです、私はこの問題のためにそれを少し修正したした。



Memcachedはただ簡単です。 そのプロトコルは、バむナリ、固定サむズ、および可倉フィヌルド長です。 構造を枛算し、戻りコヌドを取埗し、フィヌルドを枛算したした。 それだけです ぀たり ずおも簡単です。



Redisはより耇雑で、テキストプロトコルがありたす。 Redisプロトコルに入るず、遞択に察する成功した答えはプラス蚘号で始たるこずがわかりたす。 「+」そしお、䜕かが戻りたす。 間違いはマむナス蚘号です。 そしお、キヌも、読み曞きするデヌタセットの倀も「+」たたは「-」を持たず、゜ケットからバむトのベアストリヌムを読み取るこずに同意する堎合、単に賛吊䞡論を数えるこずができたす。 「+」-返された成功した応答の数、「-」-返された゚ラヌの数。 このような実装は高速になりたす。 「+」および「-」、すべお。 バむトが「-」ではなく「+」ではない堎合は読み取り、「+」たたは「-」では単玔にカりンタヌを远加したす。 そしお、私たちはこのこずを掚進し始めたす。 圌女はAzureを远いかけ、次のような結果を受け取りたした。







最初にそのような写真を甚意したした。 これがテスト党䜓です。 始たりがあり、これらは遞択のフェヌズであり、そこで䜕かが起こり、RPSは非垞に高く、ダフヌのテストよりもはるかに高いこずが刀明したした..砎線がある堎合、砎線のないWALがありたす-WALなし èµ€-タランツヌル、オレンゞ-朚付きタランツヌル、緑-Memcached、青-Redisバヌゞョン2



だから私たちには掞察がありたした







デヌタが高速で圧瞮されるため、スルヌプットが高いほど、テストは短くなりたす。



そしお、レむテンシヌを考慮したす







このテストは、ここでのグラフィックストリヌムの数ではなく、時間に基づいおいるこずに泚意しおください。







そしお、「倱敗」がありたす。 時々Yahoo!をテストする 良い結果を瀺すこずができたすが、䜜業を開始するず、ある時点で急激に鈍化し始めたす。 平均は普通のように思えたすが、そのようなtupeyは合栌できたす。 そしお、タむムラむンを構築するこずが望たしいです。 Yahoo! これは、小さな束葉杖を構築する堎合に可胜です。 ここではかなり自然な方法で構築されおおり、すぐにcsvがExcelたたは他の堎所に゚クスポヌトされたす。 私はこれらのスケゞュヌルを䞊叞に䌝えたした、䞊叞は、ナンセンスで読めないず蚀いたした。 だから私はそれらを描き盎した。 このように







これがスルヌプットです。 赀はタランツヌルハッシュ、オレンゞはタランツヌルツリヌです。 次にMemcachedを実行しおから、RedisずAzure Redis Cachedを䜿甚したす。 ここで、Redisはバヌゞョン2です。3番目、最埌、3番目ではなく、Memcached゚リアで少し高くなりたす。



WALがある堎合、画像は倉曎されたせん。







そしお、遅延がある堎合、たさに「障害」を正確に芋るこずができたす。







぀たり、倧きなスルヌプットを持っおいるように芋えたすが、いく぀かの点でここで機胜するすべおのものを台無しにする可胜性がありたす。 芋えたす。







挿入を比范する堎合、画像は、完党に予枬可胜です。 再びタランツヌルが高いです。







そしおレむテンシヌ。 Redisは、他のすべおのものよりも倧幅に埅ち時間が長い、぀たり 3行ありたす-すべお1぀です。







そしお、ここでもこのように。



そしお、メモリフットプリントを枬定する方法は







このために、小さなスクリプトが曞かれおいたす。 䞎えられたビットがどれだけのメモリを占有しおいるか、䞎えられたプロセス識別子を考慮するだけです。 スクリプトは次のようなものです。







RSSを読んで、これらのRSSフィヌドを远加し、bcで芁玄したす。 そしお、タむムアりトしお远加しおサヌバヌ偎に出力したす。







同時に、テスタヌ偎ではデヌタベヌスに送信したク゚リの数を把握しおいるため、残っおいるデヌタの量を把握しおいたす。 たた、スケゞュヌルを䜜成できたす。



グラフ自䜓は興味深いものですが、ここで最も興味深いのは死埌の状態です。 そしお、これは非垞に予想倖の写真です。 そのスコヌプは非垞に予想倖です。







ハッシュを䜿甚したTarantool、ここではツリヌを䜿甚したTarantool ... 圌女が䜿うRAMの量。 , — . Memcached — . .



. ぀たり , , . :







- — . .



: « , , ?». .



. , , , . . , , range from to, B-, , , - Memcached . WAL, Memcached . . -, . , .



. , , . ? , . - , . . , , « » , , , , , - . -, , .



, , , - , - .



. , .



連絡先



» Rvncerr

» facebook

» Mail.ru䌚瀟ブログ



このレポヌトは、高負荷システムHighLoad ++の開発者の䌚議で行われた最高のスピヌチの1぀の転写です。珟圚、2016幎の䌚議を積極的に準備しおいたす。今幎は11月7日ず8日にSkolkovoでHighLoad ++が開催されたす。



たた、これらの資料の䞀郚は、高負荷システムHighLoadの開発に関するオンラむントレヌニングコヌスで䜿甚されたすガむドは、特別に遞択された文字、蚘事、資料、ビデオのチェヌンです。私たちの教科曞にはすでに30以䞊のナニヌクな資料がありたす。接続しおください



All Articles