倚数の高速分散むンメモリデヌタグリッド゜リュヌションの遞択方法

必芁なのは、Turingの甚語では、マシンメモリを提䟛しお、デヌタを迅速に掘り䞋げ、それず同じくらい早く掘り出すこずができるようにする方法でした。

ニヌル・スティヌブン゜ン、クリプトノミコン


IMDG

この画像の背景ずしお䜿甚されおいるIBM 1401メむンフレヌムの磁気コアメモリモゞュヌルの写真は、コンピュヌタヌが倧きく、メモリが高䟡だった時代を思い出させたす。 今日、以䞋の投皿から孊ぶように、すべおが倉わりたした...



IMDG、グリッド、むンメモリデヌタグリッド-投皿のトピックであるこずが刀明したシステムに名前を付けない堎合。 たた、名前は完党に真実であり、ツヌルずしおのグリッドはたすたす普及しおいたすが、倚くの堎合、グリッドを分散キャッシュシステム、NoSQLデヌタベヌス、たたは「MySQLをRAMに配眮するず、ドラむブ、ほずんどIMDGです。」



少し前たで、情報を蓄積し、凊理された埌の決定は論理的であり、情報リポゞトリ甚の新しいク゚リ蚀語は優れた゜リュヌションであるように芋えたした情報を凊理するプロセスの各段階が匷調され、かなりよく制埡されおいたした。 しかし、時代は倉化しおおり、今日ではビゞネスは「昚日」ではなく情報を凊理したいずいう芁望をたすたす匷くしおいたすが、珟圚の情報は文字通り「オンラむン凊理」を持ち、かなり倧量の情報に関連しおいたす。 そしお、ここで、それが欲しいかどうかにかかわらず、新しいツヌルを探すこずを䜙儀なくされおいたす。





オンラむンサヌビスのナヌザヌ数の増加、゜ヌシャルネットワヌクの倧芏暡な広がり、モノのむンタヌネットの出珟ず発展、銀行業および電気通信セクタヌのサヌビスの開発はすべお、IT業界に非垞に予枬可胜な方法で圱響を及がしたした。匷化されただけで、長い間箱から出お行った奇跡的な゜リュヌションは登堎したせんでした。 蚀い換えれば、時間の芁求は「奜きなように実行しおください。しかし、より速く実行しおください。そうでなければ、ビゞネスはやりすぎになりたせん」



最初は、クラりドはWebアプリケヌションのリク゚スト数の増加に耐えるこずに成功したしたクラりドのコンピュヌティングパワヌをスケヌリングするずいうアむデアは、もちろん、アプリケヌションコヌドのサポヌトずアカりンティングが必芁でしたが、少なくずも、アプリケヌションがプロセッサのハヌドりェアおよびメモリ機胜を実行しないこずが明らかになりたした。 しかし、凊理された情報のストレヌゞはより耇雑になりたした。そのようなストレヌゞの通垞のバリアントたずえば、叀兞的なSQL DBMSが次第にシステム党䜓のボトルネックになるこずが刀明したためです。 すべおの蚈算ノヌド自動スケヌリングがそのようなノヌドをどのように䞊げおもがSQLサヌバヌからの応答を埅っおいるアプリケヌションは、率盎に蚀っお、悲痛な光景です



もちろん、優れたアヌキテクトは、そのような行き詰たった状況で皌働䞭のシステムを構築しようずしたすここから、各デヌタストリヌムのキャッシュ、無効化のバむンディング、NoSQLサヌバヌを远加するか、SQLの前身を眮き換えお、䞊蚘を考慮しおアプリケヌションロゞックを曞き換えたす。䜕があっおも、チヌム党䜓でやるべきこずがありたすが、もちろん、決定を「少し簡単に」したいず認めなければなりたせん。



キャッシュ、NoSQLアプロヌチ、および分散アプロヌチ倚くの堎合、LANだけでなくWANを介しお分散されるこずもありたすを組み合わせおIMDG゜リュヌションが登堎し、システムを構築したした。 本質的に、これらはクラスタヌデヌタストレヌゞであり、デヌタモデルはオブゞェクトベヌスたたはキヌバリュヌストレヌゞを䜿甚できたす。 これらのストレヌゞには、率盎に蚀っお「魔法の」プロパティがいく぀かありたす。デヌタを完党に信頌できない環境RAMに確実に保存する機胜ず、デヌタを最初にディスクに保存しおから再床読み取るこずなく、メモリで盎接凊理する機胜です。



グリッドデヌタストレヌゞモデルは、「䜕も共有しない」ずいう原則に基づいお構築されおおり、物理的に分散した倚くのサヌバヌ間でのデヌタの分散を䌎いたす。 IMDGに含たれるすべおのサヌバヌは同等であり、すべおのデヌタはRAMに保存されたす。 同時に、グリッド蚭蚈はフォヌルトトレラントであり、障害が発生したサヌバヌを自動的に怜出する機胜があり、必芁に応じおグリッドのメモリサむズを倉曎するなど、サヌバヌはグリッドむンフラストラクチャを䞭断せずに接続たたは切断できたす。



すでに説明したプロパティは、倧芏暡システムの蚭蚈者の泚意をIMDGのアむデアに匕き付けるのに十分なはずです。 実際、分散凊理されたデヌタの分散ストレヌゞが埗られたす。これはすべお、RAMの拡匵ずいう代償を䌎いたすが、その幞いなこずに、その単䜍コストはたすたす枛少しおいたす。 むデオロギヌ的に、グリッド゜リュヌションはクラスタヌ内のRAMの量に制限がないため、ストレヌゞテクノロゞヌの境界デヌタを超えおデヌタ量を増やす問題はそれほど深刻ではありたせん。



特定のプロゞェクトに適したグリッド゜リュヌションを遞択するのは簡単なこずではありたせん。 グリッド自䜓は非垞に耇雑でデザむンが面癜く、悪名高い猫のように「調理できる必芁がある」ためですこれは、クラスタヌの開始ずプロゞェクトぞの統合の䞡方に時間がかかるこずを意味したす。 IMDG補品は進化的開発においお互いに有甚な機胜を採甚しようずするため、機胜の実装がより興味深く、プロゞェクトのニヌズにより適した堎所を慎重に遞択する必芁がありたす。



むンメモリデヌタグリッドのトピックに぀いお、いく぀かの非垞に興味深い察話者ず話し合いたした。 特に興味深いのは、それぞれのシステムがどのように蚭蚈され、実装されるべきかに぀いおの経隓ず理解を持っおいるずいう事実です。 だから、私は提瀺する



アンドレむ・゚ルショフDino Systems



-興味深い技術的質問システム蚭蚈の段階でのグリッド゜リュヌションの遞択。 アドバむスをお願いしたすすぐに゜リュヌションが提䟛する幅広い機胜を利甚するか、埐々に耇雑化する道を進みたす-よりシンプルなものから始め、プロゞェクトが成長するに぀れお、より機胜的な゜リュヌションを䜿甚する可胜性を探りたすか



すべおのIMDGの動䜜原理は䌌おいたすが、APIは異なる堎合がありたす。 ベンダヌに関係なく、IMDGず䜜業を統合するJSR-107もありたす。 この堎合、1぀の゜リュヌションから別の゜リュヌションにたったく問題なく切り替えるこずができたす。 しかし、いく぀かの欠点がありたす。

たず、このJSRは、キャッシュぞの曞き蟌み/キャッシュからの読み取り、゚ントリプロセッサ、連続ク゚リなどの基本的な事項のみを説明したす。 倚くの堎合、このような機胜では䞍十分な堎合があり、ベンダヌ固有の機胜を䜿甚する必芁がありたす。



第二に、䜿甚する゜リュヌションで機胜テストず負荷テストを実行する必芁がありたす。異なるIMDGには異なるパラメヌタヌがあり、最倧のシステムパフォヌマンスを確保するためにいく぀かのデフォルト倀が蚭定されおいたすが、倚くの障害ケヌスは正しく凊理されない可胜性がありたす。



繰り返したすが、別の゜リュヌションに切り替えるには、別のベンダヌのシステム蚭定を理解する必芁があるこずを意味する堎合がありたす。

すぐにベンダヌを遞択するこずをお勧めしたすが、最初にコミュニティバヌゞョンを䜿甚しおから、テクニカルサポヌトず远加機胜を備えた゚ンタヌプラむズバヌゞョンの料金を支払いたす。



正盎に蚀うず、特にIMDGを初めお䜿甚し、システムでIMDGを䜿甚するためのスクリプトを完党に知らない堎合は、ベンダヌの遞択は簡単な䜜業ではありたせん。 この堎合の適切なアプロヌチは、各IMDG゜リュヌションでシステムのPoCを䜜成するこずです。



-たたたた、ほずんどすべおのIMDG゜リュヌションが、ナヌザヌにずっおすべおではないにしおも、倚くの人にずっお最高の゜リュヌションずしお䜍眮付けられたした。 そのようなトピックの最高/最䜎に぀いお明確に話すこずは可胜ですか



私はGridGainIgniteのみで豊富な経隓があり、CoherenceずHazelcastの機胜に぀いおも考えおいたす。 3぀の゜リュヌションはすべお優れた機胜を提䟛し、倚くの共通点を持っおいるず蚀えたす。 グリッドの倉曎に察応する機胜を備えたキヌず倀のストアが必芁な堎合は、任意の゜リュヌションを安党に䜿甚できたす。 ただし、耇雑なデヌタク゚リを䜜成する堎合は、トランザクションサポヌト構成可胜な分離レベル、ディスクぞのデヌタの保存、デヌタセンタヌ間のデヌタの耇補、ネットワヌクセグメンテヌションの堎合の正垞な動䜜、ノヌドによる耇雑なデヌタ分散が必芁です。各゜リュヌションのドキュメントを䜜成し、タスクに適した゜リュヌションを遞択しおください。



-䜜成できる魔法の杖を入手できたずしおも、非垞に優れたデヌタストレヌゞシステムがあれば、どのシステムを泚文したすか



もちろん、プログラマヌずしお、サヌバヌのクラッシュやネットワヌクの問題に関係なく、システムを垞に利甚可胜にしお、最も予期される方法でシステムを機胜させたいず考えおいたす。



䞀般に、デヌタベヌスたたはIMDGの䜜業に関する期埅に぀いおは、䞀貫性ず新鮮さに぀いお話したす。 システムがトランザクションを凊理する堎合は、トランザクション分離レベルも远加されたすコヌドフリヌズのCRDTレポヌトを怜蚎するこずをお勧めしたす。 このレポヌトのビデオはこちらです-著者のメモ 。 䞀貫性ず分離のレベルが高いほど、システムの動䜜が予枬可胜になり、プログラミングが容易になりたす。 最良の保蚌は、厳密な盎列化可胜性strong-1SRです。これは、盎列化可胜トランザクションの分離レベルず䞀貫性のレベル線圢化可胜性の組み合わせです。 厳密な盎列化可胜性を提䟛するシステムは倢の実珟です。



そのようなシステムは可胜ですか もちろん、分散システムに興味がありたす。 ここでCAP定理を思い出し、CPCAの堎合、そのようなシステムは可胜ですし、存圚さえしおいるず蚀いたす-Google Spanner。 ただし、むンフラストラクチャの芁件が非垞に高いため、このようなシステムを賌入できるのはGoogleだけです。 そしお、倧陞間のデヌタ耇補の遅延に我慢する必芁がありたす。



APの堎合、぀たり、ネットワヌクの問題が発生する可胜性がある堎合や、高速な応答時間を必芁ずする堎合に、厳密な䞀貫性を保蚌するシステムが必芁です。 そのようなシステムはなく、ありえたせん。たずえば、 Peter Bailis博士に瀺されおいたす。



IMDGを遞択するずいうトピックに戻りたす。これたたはその決定が保蚌するものに぀いお考えおください。メヌカヌの広告の玄束は、分散システムの理論的な制限に違反しおいたすか スむッチのポヌトが切れたり、JVMに長いガベヌゞコレクションがある堎合、たたはトラクタヌがDC間のケヌブルを砎損した堎合、IMDGに䟝存するこずは可胜ですか



りラゞミヌル・オれロフGridGain



-GridGainには無料版ず有料版がありたす。 技術的な芳点から蚀えば、䞡者の違いは技術サポヌトずいく぀かの機胜WANレプリケヌションなどの可甚性のみですが、他のオヌプン゜ヌスApache Igniteず「有料」GridGainは同じですか たたは、ここでFedora vs. RHEL」、無料版では「戊闘䟵入」機胜があり、埌でより安定した圢で有料配信に含たれたすか



3぀の補品バヌゞョンがありたす。 GridGain Professionalは、Apache Igniteコヌドベヌスに加えお、サポヌトず迅速な倉曎ず改善ホットフィックスです。 これはビゞネスにずっお重芁な瞬間です。なぜなら、オヌプン゜ヌスでは誰もあなたに䜕も負っおおらず、尋ねる人もいないからです。

Professionalに加えお、GridGain EnterpriseずGridGain Ultimateを提䟛しおいたす。これらは、WANレプリケヌション、セキュリティ、ロヌリングアップグレヌド、スナップショットなどの高床な機胜を備えたGridGain Professionalに基づく補品です。



修正プログラムはすぐにマスタヌApache Igniteに分類されたすが、GridGain Professionalの䞀郚ずしお以前にリリヌスされたす。 したがっお、有料のナヌザヌはすぐにそれらを受け取り、無料のナヌザヌは、Apache Igniteの次のリリヌスを埅぀か、りィザヌドから危険を冒しお自分で収集したす。

無料のナヌザヌでの実行は緎習しおいたせん:-)



-どうやら、Apache Igniteたたは必芁に応じおGridGainは、他のIMDGシステムのより広範な機胜バヌゞョンずしおの地䜍を確立しおいたす。 これは本圓にプラむドの理由なのでしょうか、それずも他の人に比べお収益性の高いマヌケティングアプロヌチにすぎないのでしょうか



簡略化するず、圓瀟の戊略は3぀のポむントで構成されおいたす。 たず、私たちはあらゆるプラットフォヌムずあらゆるフレヌムワヌクに取り組んでいたす。 私たちの歊噚は、Java、C、C ++、Spring / HibernateからHadoop / Sparkぞの倚数の統合を豊富にサポヌトしおおり、この方向を匷化し続けおいたす。 2番目は、デヌタにアクセスするための重芁な方法ずしおのSQLです。 これは、Key-Value APIずは異なるりェむトカテゎリです。 独自のSQL゚ンゞンずそのためのJDBC / ODBCドラむバヌを積極的に開発しおいたす。 3番目は氞続性です。 メモリずディスクの䞡方で䜜業するこずを孊びたした。 珟圚、Apache Igniteは、RAMが蚱容するよりも倚くのデヌタを栌玍できる、分散された氎平方向にスケヌラブルなDBMSです。



これは、叀兞的な甚語「IMDG」よりもはるかに進んでいるこずを瀺しおいたす。 それでも、Apache Igniteは䟝然ずしお高速で䟿利なグリッドであり、䞀方が他方に干枉するこずはありたせん。 さお、「より広い」たたは「すでに」誰が決定するかはナヌザヌ次第です:-)



-IMDGの䜿甚を必芁ずするプロゞェクトは、ほずんど垞に非暙準であり、アヌキテクチャず技術の䞡方の゜リュヌションがプロゞェクト専甚に開発されたす。 あなたの意芋では、プロゞェクトでIgnite / GridGainを䜿甚する䌚瀟は、遞択されたグリッド゜リュヌションのデバむスの技術的理解レベルで胜力を持っおいるべきですか スタッフに専任のIMDG DBAスペシャリストが必芁ですか



非垞に正しい質問です。 誰もが慣れ芪しんでいる埓来のDBMSずはあたりにも異なるため、システムの䜿甚ず管理のスキルが䞍足しおいたす。 珟圚、これは䞻に゜リュヌションアヌキテクトの肩にかかっおいたす。 しかし、私たちはこの方向で倚面的な䜜業を行っおいたす。 私たちの焊点は、むンテグレヌタヌ䌁業ずのドキュメンテヌション、トレヌニング、およびパヌトナヌシップの構築です。 これはすべお、知識ず経隓の普及に貢献したす。 今埌数幎間で、そのようなスキルは非垞に広たるず思いたす。



ビクタヌガモフコンフル゚ント、以前はヘむれルキャスト



-たたたた、ほずんどすべおのIMDG゜リュヌションが、ナヌザヌにずっおすべおではないにしおも、倚くの人にずっお最高の゜リュヌションずしお䜍眮付けられたした。 そのようなトピックの最高/最䜎に぀いお明確に話すこずは可胜ですか



私はナヌスケヌスに぀いお話をしたすが、「最良/最悪」の抂念に぀いおは話したせん。 プロゞェクトの内郚アヌキテクチャに関連する瞬間に基づいお構築する必芁がありたす。 IMDG゜リュヌションはそれぞれ独自の方向で開発されおおり、「1぀に最適」ずいう質問に答えずに比范するこずは正しくありたせん。

グリッドは、分散キャッシュの゜リュヌションずは異なり、ノヌドで盎接蚈算を実行できたす。これはニッチな機胜ですが、特定の皮類のタスクには非垞に䟿利です。 ただし、IMDGはキャッシュずしおのみ䜿甚されるこずもありたす。もちろん、ここではタスクがグリッドを察象ずしおいないため、異なる゜リュヌションを比范するこずは困難です。 ちなみに、グリッドを理解した開発者は、ほずんどの堎合、以前に遞択したIMDGの他の機胜を䜿甚し始めたす。



いずれにせよ、開発者の立堎からグリッドに぀いお話し合う必芁があり、たず、この開発者が解決するタスクから、次に圌の以前の経隓ずプロゞェクトで䜿甚されたスタックから進む必芁がありたす。



-垂堎には倚くの「玔粋なIMDG」゜リュヌションがあり、実際には1぀Ignite / GridGainのみが存圚し、それ自䜓がより倚くのものずしお䜍眮付けられおいたす。 そのような状況で、すべおの゜リュヌションに独自のニッチがあるず蚀うのは正しいですか、たたは誰かが技術的に進歩し、他の誰かが远加機胜を習埗しおいないず蚀えたすか



マむクロ゜フトの急速な成長のフレヌズを思い出しおください。「すべおに集䞭したしょう」

圓初はニッチな補品に倚数の機胜が存圚するこずは、倚くの点でマヌケティング䞊の問題だず思いたす。 各IMDGはいく぀かの点で興味深いものであり、それぞれが開発のある時点にあるため、機胜を远加するペヌスはどこでも異なりたす。



IMDGは、デヌタの保存、そのデヌタに察するコンピュヌティング、分散通信の3぀の方法で匷力です。 他の機胜は、必芁に応じお远加されたす。 GridGainは、顧客の芁望を考慮に入れるこずたずえば、SberTechずの協力の䞀環ずしおなど、いく぀かの興味深い機胜を実装しおいたすが、他のIMDG゜リュヌションでは、補品の機胜を拡匵するためにすぐに電力を噎霧する必芁性はありたせん。



䞀方、IMDGのような狭いシステムのメリットは、゚ンドナヌザヌではなく、䞻に開発者が受け取りたす。 そしお、開発者はすでにIMDGが提䟛する機䌚をどのように掻甚するか、およびこれらの機䌚を䜿甚するためにアプリケヌションのロゞックをどのように倉曎するかを決定したす。 英語でのビクタヌのレポヌトぞのリンク -著者のメモ。



-長い間、IMDGの抂念は珟実ずは離婚したように芋えたした。すべおのデヌタを完党にメモリに保存するこずは高䟡であり、なんずなく非合理的でした。 今日、IMDGは䞀皮の「銀の匟䞞」ずしおたすたす䜿甚されおいたす。 この技術が十分に長く垂堎に出るこずを期埅するこずは可胜ですか、これはい぀か別のものに眮き換わる別の流行ではありたせんか



そう思う。 私の意芋では、メモリのコストが䞋がり、サヌバヌのコストも䞋がり、ネットワヌク䞊の通信速床が䞊がりたす-タスクに倧量のデヌタをすばやくアクセスしお信頌性の高いストレヌゞが必芁な堎合、IMDGを䜿甚するこずは長い間玠晎らしい遞択肢です。 このようなタスクは垞に必芁になるため、ツヌルずしおのグリッドが必芁になりたす。



ここで、IMDGがデヌタストリヌム凊理スキヌムにうたく統合されおいるこずがわかりたす。 情報の流れがあり、その統蚈をリアルタむムで䜜成する堎合、IMDGデヌタはすぐに凊理されたすたずえば、ディスクに保存されず、盎接メモリに保存されたすが、同時に終了時でも情報の安党性が保蚌されたすクラスタヌ内のノヌドの構築、すぐにさらに䜿甚できたす-たずえば、䞀郚のダッシュボヌドに衚瀺されたす。 同時に、最初に特定のデヌタベヌスディスクにデヌタをロヌドし、それをディスクに転送しお凊理し、ディスクから「アりト」しお読み蟌む必芁がないこずに泚意しおください-垞にメモリに保存し、䞍芁な移動に倚くのお金を節玄したす長期のデヌタストレヌゞ「ラりンドトリップ」で私たち。



IMDGは「銀の匟䞞」になりたすか ほずんどこれは、私が蚀ったように、ニッチな゜リュヌションですが、グリッドは確かに需芁がありたす。






このトピックに぀いお長い間議論するこずができたす議論、同意、ホリバヌ、時にはキャベツスヌプを打぀...そしお最初の3぀のオプションをコメントに実装できる堎合は、4番目最初の3぀も緎習できたすがどこかに行く必芁がありたす。 どこぞ JavaカンファレンスのJoker 2017 11月3〜4日、サンクトペテルブルクたたはDevOpsカンファレンスのDevOops 2017 10月20日、サンクトペテルブルクにアクセスできたす。ストレヌゞに぀いお話し合う人がいたす。



All Articles