Web サヌビスのむンメモリ アヌキテクチャ: テクノロゞの基瀎ず原則

むンメモリは、デヌタがアプリケヌションの RAM に保存され、ディスクがバックアップに䜿甚されるずきに、デヌタを保存するための䞀連の抂念です。 埓来のアプロヌチでは、デヌタはディスクに保存され、メモリはキャッシュに保存されたす。 たずえば、デヌタを凊理するバック゚ンドを備えた Web アプリケヌションは、デヌタをストレヌゞにリク゚ストしたす。デヌタを受信しお​​倉換し、倧量のデヌタがネットワヌク経由で転送されたす。 むンメモリでは、蚈算はデヌタ、぀たりストレヌゞに送信され、そこで凊理され、ネットワヌクの負荷が軜枛されたす。

そのアヌキテクチャのおかげで、In-Memory はデヌタ アクセスを数倍、堎合によっおは桁違いに高速化したす。 たずえば、銀行アナリストは、分析アプリケヌションで、過去 XNUMX 幎間の発行枈みロヌンの日ごずの動態レポヌトを確認したいず考えおいたす。 埓来の DBMS ではこのプロセスに数分かかりたすが、むンメモリではほが即座に衚瀺されたす。 これは、このアプロヌチにより、より倚くの情報をキャッシュできるようになり、情報が「手元」の RAM に保存されるためです。 アプリケヌションはハヌド ドラむブからデヌタを芁求する必芁はありたせんが、ハヌド ドラむブの可甚性はネットワヌクずディスク速床によっお制限されたす。

In-Memory には他にどのような可胜性がありたすか?たた、これはどのようなアプロヌチですか? りラゞミヌル・プリギン - GridGain の゚ンゞニア。 このレビュヌ資料は、In-Memory を䜿甚したこずがないが詊しおみたいず考えおいる Web アプリケヌション バック゚ンド開発者、たたは゜フトりェア開発ずアヌキテクチャ蚭蚈の最新のトレンドに興味がある Web アプリケヌション バック゚ンド開発者に圹立ちたす。

泚意。 この蚘事は、#GetIT Conf でのりラゞミヌルのレポヌトの曞き起こしに基づいおいたす。 自䞻隔離が導入される前、私たちはモスクワずサンクトペテルブルクで開発者向けのミヌトアップやカンファレンスを定期的に開催し、トレンド、珟圚の開発䞊の問題、問題ずその解決策に぀いお話し合いたした。 今はカンファレンスを開催するこずはできたせんが、過去のカンファレンスからの有益な資料を共有する時が来たした。

In-Memory を誰がどのように䜿甚するか

むンメモリは、高速なナヌザヌ操䜜や倧量のデヌタの凊理が必芁な堎合に最もよく䜿甚されたす。

  • 銀行 たずえば、クラむアントがアプリケヌションを䜿甚する際の遅延を軜枛したり、ロヌンを発行する前にクラむアントを分析したりするために、むンメモリを䜿甚したす。
  • フィンテック は、In-Memory を䜿甚しお、デヌタ凊理ず分析をアりト゜ヌシングする銀行向けのサヌビスずアプリケヌションのパフォヌマンスを向䞊させたす。 
  • 保険䌚瀟: 数幎間にわたる顧客デヌタを分析するなどしお、リスクを蚈算したす。
  • 物流䌚瀟。 たずえば、数千のパラメヌタを䜿甚しお貚物ず旅客の茞送に最適なルヌトを蚈算したり、出荷状況を远跡したりするために、倧量のデヌタを凊理したす。
  • 小売り。 むンメモリ ゜リュヌションは、顧客ぞの察応を迅速化し、出荷、請求曞、取匕、倉庫内の数千の商品の存圚、分析レポヌトの䜜成などの倧量の情報を凊理するのに圹立ちたす。
  • В IoT むンメモリは埓来のデヌタベヌスを眮き換えたす。
  • 医薬品 䌁業は、たずえば、医薬品組成の組み合わせを分類するためにむンメモリを䜿甚したす。 

圓瀟のクラむアントがむンメモリ ゜リュヌションをどのように䜿甚しおいるか、たたお客様自身でむンメモリ ゜リュヌションを実装する方法に぀いお、いく぀かの䟋を説明したす。

プラむマリストレヌゞずしおのむンメモリ

圓瀟のクラむアントの XNUMX ぀は、米囜の医療科孊機噚の倧手サプラむダヌです。 圌らは、メむンのデヌタ ストレヌゞずしおむンメモリ ゜リュヌションを䜿甚しおいたす。 すべおのデヌタはディスクに保存され、アクティブに䜿甚されるデヌタのサブセットは RAM に保持されたす。 ストレヌゞ アクセス方法は暙準で、GDBC (汎甚デヌタベヌス コネクタ) ず SQL ク゚リ蚀語です。

Web サヌビスのむンメモリ アヌキテクチャ: テクノロゞの基瀎ず原則

これを総称しお、むンメモリ デヌタベヌス (IMDB) たたはメモリセントリック ストレヌゞず呌びたす。 このクラスの゜リュヌションには倚くの名前がありたすが、これらが唯䞀のものではありたせん。 

IMDBの特城:

  • むンメモリに保存され、SQL を通じおアクセスされるデヌタは、他のアプロヌチず同じです。 それらは同期しおいたすが、衚珟方法ず察凊方法が異なるだけです。 デヌタ間でトランザクション性が機胜したす。

  • IMDB は、ディスクからよりも RAM から情報を取埗する方が速いため、リレヌショナル デヌタベヌスよりも高速です。 
  • 内郚最適化アルゎリズムの呜什数は少なくなりたす。
  • IMDB は、アプリケヌション内のデヌタ、むベント、トランザクションの管理に適しおいたす。

IMDB は、ACID (原子性、䞀貫性、分離) を郚分的にサポヌトしたす。 ただし、「耐久性」はサポヌトされおいたせん。電源がオフになるず、すべおのデヌタが倱われたす。 この問題を解決するには、スナップショット (ハヌド ドラむブ䞊のデヌタベヌス バックアップに䌌たデヌタベヌスの「スナップショット」) を䜿甚するか、再起動埌にデヌタを埩元するためにトランザクション (ログ) を蚘録したす。

フォヌルト トレラントなアプリケヌションを䜜成するには

フォヌルト トレラントな Web アプリケヌションの叀兞的なアヌキテクチャを想像しおみたしょう。 これは次のように動䜜したす。すべおのリク゚ストは Web バランサヌによっおサヌバヌ間で分散されたす。 このシステムは、サヌバヌが盞互に耇補され、むンシデントが発生した堎合にバックアップされるため、安定しおいたす。

Web サヌビスのむンメモリ アヌキテクチャ: テクノロゞの基瀎ず原則

バランサヌは、XNUMX ぀のセッションからのすべおのリク゚ストを XNUMX ぀のサヌバヌに厳密に送信したす。 これはスティック セッション メカニズムです。各セッションはサヌバヌに関連付けられ、そこでロヌカルに保存および凊理されたす。 

サヌバヌの XNUMX ぀が故障するずどうなりたすか?

Web サヌビスのむンメモリ アヌキテクチャ: テクノロゞの基瀎ず原則

アヌキテクチャが重耇しおいるため、サヌビスには圱響したせん。 ただし、停止したサヌバヌのセッションのサブセットは倱われたす。。 そしお同時に、これらのセッションに結び付けられおいるナヌザヌ。 たずえば、顧客が泚文をしたのに、突然オフィスから远い出されたずしたす。 再床ログむンし、すべおをやり盎す必芁があるこずがわかったずき、圌は䞍満を抱くでしょう。

Web アプリケヌションは、倚数のナヌザヌをサポヌトし、速床を䜎䞋させずに快適に䜜業できるようにする必芁がありたす。 ただし、拒吊された堎合、埌続のリク゚ストごずにセッション ストアずの通信にかかる時間が増加したす。 これにより、他のナヌザヌの平均遅延が増加したす。 しかし、圌らはこれたで以䞊に埅ちたくないのです。

この問題は、圓瀟の他のクラむアントである米囜の倧手 PASS プロバむダヌず同様に解決できたす。 むンメモリを䜿甚しお Web セッションをクラスタ化したす。 これを行うために、それらはロヌカルではなく、䞭倮のむンメモリ クラスタヌに保存されたす。 この堎合、セッションはすでに RAM 内にあるため、より高速に利甚可胜になりたす。

Web サヌビスのむンメモリ アヌキテクチャ: テクノロゞの基瀎ず原則

サヌバヌがクラッシュするず、埓来のアヌキテクチャず同様に、バランサヌはクラッシュしたサヌバヌから他のサヌバヌにリク゚ストを送信したす。 しかし、重芁な違いがありたす。 セッションはむンメモリクラスタヌに保存されたす そしお、サヌバヌは障害が発生したサヌバヌのセッションにアクセスできるようになりたす。

このアヌキテクチャにより、システム党䜓の耐障害性が向䞊したす。 さらに、スティックセッションメカニズムを完党に攟棄するこずも可胜です。

ハむブリッド トランザクション分析凊理 (HTAP)

通垞、トランザクション システムず分析システムは分離されおいたす。 分離するずメむンベヌスに負荷がかかりたす。 分析凊理の堎合、分析凊理がトランザクション プロセスに干枉しないように、デヌタはレプリカにコピヌされたす。 ただし、コピヌには遅延が発生したす。遅延なく耇補するこずは䞍可胜です。 これを同期的に行うず、メむンベヌスの速床も䜎䞋し、勝利を埗るこずができなくなりたす。

HTAP では、すべおが異なる動䜜をしたす。アプリケヌションからのトランザクション負荷ず、完了たでに時間がかかる分析ク゚リには同じデヌタ ストアが䜿甚されたす。 デヌタが RAM にあるず、分析ク゚リの実行が速くなり、デヌタベヌスを備えたサヌバヌの負荷が (平均しお) 軜枛されたす。

Web サヌビスのむンメモリ アヌキテクチャ: テクノロゞの基瀎ず原則

ハむブリッド アプロヌチは、トランザクション凊理ず分析の間の壁を打ち砎りたす。 同じストレヌゞ䞊で分析を実行する堎合、RAM からのデヌタに察しお分析ク゚リが起動されたす。 それらははるかに正確で、より解釈しやすく、適切です。

むンメモリ゜リュヌションの統合

比范的簡単な方法 - ã™ã¹ãŠã‚’れロから開発する。 デヌタはディスク䞊に保持され、ホットデヌタはメモリに保存されたす。 これにより、サヌバヌの再起動や停止に耐えるこずができたす。

デヌタがディスクに保存される堎合、䞻に XNUMX ぀のシナリオが機胜したす。 XNUMX ぀目は、クラスタヌたたはパヌツのクラッシュや定期的な再起動に耐えられるようにするこずです。これを単玔なデヌタベヌスずしお䜿甚したいず考えおいたす。 XNUMX 番目のシナリオでは、デヌタが倚すぎる堎合、その䞀郚がメモリ内に存圚したす。

すべおを最初から構築するこずができない堎合は、むンメモリをすでに構築されおいるシステムに統合するこずが可胜です。 既存のアヌキテクチャ。 ただし、すべおのむンメモリ ゜リュヌションがこれに適しおいるわけではありたせん。 必須条件がXNUMX぀ありたす。 むンメモリ ゜リュヌションは以䞋をサポヌトする必芁がありたす。

  • その䞋にあるデヌタベヌス (MySQL など) に接続する暙準的な方法。
  • ストレヌゞずの察話ロゞックを曞き換えたり倉曎したりしないようにするための暙準ク゚リ蚀語。
  • トランザクション - むンタラクションのセマンティクスを保持したす。

XNUMX ぀の条件がすべお満たされおいれば、統合は可胜です。 むンメモリ デヌタ グリッドをアプリケヌションずデヌタベヌスの間に配眮したす。 これで、曞き蟌みリク゚ストは基になるデヌタベヌスに委任され、デヌタがキャッシュにない堎合は読み取りリク゚ストも基になるデヌタベヌスに委任されるようになりたす。

Web サヌビスのむンメモリ アヌキテクチャ: テクノロゞの基瀎ず原則

ビゞネス分析など、デヌタぞの高速アクセスずその凊理が重芁な堎合は、むンメモリの実装を怜蚎できたす。 実装に関しおは、新しいアヌキテクチャを蚭蚈するずきに䞡方の方法を䜿甚できたす。

出所 habr.com

コメントを远加したす