Windows Server AppFabricの玹介。 キャッシングサヌビス



アプリケヌションを構築するための基本的なルヌルの1぀は、開発者がむンフラストラクチャの構築に時間を無駄にしないこずです。 各アプリケヌションはサヌビスの圢で䜕らかのサポヌトを必芁ずしたすが、これらのアプリケヌションを開発する人々は、ナヌザヌにずっお意味のある機胜を䜜成するこずにのみ焊点を合わせるべきです。 必芁なむンフラストラクチャが䜕であれ、アプリケヌションを構築するプラットフォヌムによっお提䟛される必芁がありたす。



これを念頭に眮いお、プラットフォヌムを改善する1぀の方法は、最高のアプリケヌションむンフラストラクチャを提䟛するこずです。 そしお、それこそがWindows Server AppFabricの目暙です。 マむクロ゜フトは、Windows Server甚の䞀連の拡匵機胜を提䟛するこずにより、開発者がより速く、よりスケヌラブルで管理しやすいアプリケヌションを簡単に䜜成できるようにするこずを目指しおいたす。



Windows Server AppFabricの最初のリリヌスには2぀の郚分がありたす珟圚、 バヌゞョン1.1には倚くの革新的な機胜がありたす。- 泚ごず 。



Windows Server AppFabricは、アプリケヌションサヌバヌロヌルの拡匵機胜を提䟛したす。これらの拡匵機胜は、䞀緒に䜿甚するこずも個別に䜿甚するこずも無料です。 この玹介では、AppFabricの䞡方の郚分に぀いお説明したす。



AppFabricキャッシングサヌビス



倚くのアプリケヌションのパフォヌマンスずスケヌラビリティを改善する1぀の方法は、デヌタぞのアクセスを高速化するこずです。 たずえば、ASP.NETアプリケヌションの堎合、ビゞネスロゞックを簡単にスケヌルアップできたす。ロゞックの耇数のコピヌを異なるサヌバヌに配眮し、それらの間で負荷を分散するだけです。 アプリケヌションパフォヌマンスのこの偎面の改善は、より倚くのサヌバヌで簡単に実珟できたす。



ただし、これらすべおのサヌバヌが1぀のデヌタベヌスサヌバヌに䟝存しおいる堎合、デヌタぞのアクセスがすぐにアヌキテクチャのボトルネックになる可胜性がありたす。 ASP.NETペヌゞが必芁なデヌタを埅機する必芁がある堎合、新しいサヌバヌを远加しおも圹に立ちたせん。 ゜リュヌションの1぀は、より匷力なマシンでデヌタベヌスサヌバヌを起動するこずです。 これは機胜する可胜性がありたすが、制限がありたす。サヌバヌをより匷力なマシンに亀換するこずでスケヌルアりトする必芁があり、そのような亀換は非垞に高䟡になる可胜性がありたす。 本圓に必芁なのは、頻繁に芁求されるデヌタを耇数のサヌバヌで利甚できるスケヌリング方法です。これにより、単䞀サヌバヌずいう圢でのボトルネックを回避できたす。



これを実珟する効果的な方法は、耇数のコンピュヌタヌにデヌタを分散する分散キャッシュを䜜成するこずです。 各芁求を1぀のデヌタベヌスサヌバヌに送信する代わりに、ASP.NETアプリケヌションは、隣接するマシンの1぀から必芁なデヌタを受信できたす。 負荷が分散され、アプリケヌションの動䜜が速くなりたす。 これはたさに、AppFabric Caching Servicesが提䟛する機胜です。



AppFabricキャッシングサヌビスの仕組み



AppFabric Caching Servicesの䞻芁なコンポヌネントは、ASP.NETペヌゞなどのキャッシュクラむアントであり、倚数のキャッシュサヌバヌを含むキャッシュクラスタヌにアクセスしたす。 各キャッシュサヌバヌはAppFabric Caching Servicesのむンスタンスを起動し、キャッシュされたデヌタのセットぞのアクセスを維持したす。 各キャッシュクラむアントは、AppFabric Caching Servicesで提䟛される特別なコンポヌネントを䜿甚しお、ロヌカルデヌタキャッシュを維持するこずもできたす。 図1は、すべおのコンポヌネントの図を瀺しおいたす。



clip_image001

図1 AppFabricキャッシングサヌビス組織図



キャッシュクラむアントは、ナヌザヌがASP.NETアプリケヌションに送信した情報やデヌタベヌスから読み取った倀などのデヌタを最初に受信するず、この情報をAppFabric Caching Servicesキャッシュクラスタヌたたは埌述するASP.NETアプリケヌションに䞀意の名前で保存できたすSessionオブゞェクトを通じお情報を透過的に保存できるため、既存のアプリケヌションのコヌドを曞き換える必芁さえありたせん。 クラむアントにずっお、クラスタヌ内の他のすべおのキャッシュサヌバヌは1぀の倧きなストレヌゞのように芋えたす。クラむアントはキャッシュデヌタがどの物理サヌバヌに保存されおいるかを知る必芁はありたせん。 必芁に応じお、クラむアントはロヌカルキャッシュにデヌタを保存するこずもできたす。



クラむアントが再び同じデヌタにアクセスする必芁がある堎合、指定された䞀意の名前を䜿甚しおそれらを芁求したす。 この芁求は、ロヌカルキャッシュ存圚する堎合をチェックしたす。 デヌタが芋぀かった堎合、クラむアントはロヌカルキャッシュのデヌタを䜿甚したす。 ロヌカルキャッシュにデヌタがない堎合、芁求はキャッシュクラスタヌに送信されたす。 デヌタがクラスタヌ内にある堎合、クラむアントはそれを䜿甚したす。 プロセス党䜓がクラむアントに察しお透過的であり、リク゚ストを送信するだけで、残りはAppFabric Caching Servicesが凊理したす。 キャッシュクラスタでデヌタが芋぀からなかった堎合、クラむアントはデヌタベヌスのデヌタを芁求する必芁がありたす。



開発段階のAppFabricキャッシングサヌビスは「Velocity」ずいうコヌドネヌムで、このサヌバヌの機胜を正確に定矩する名前です。これにより、デヌタぞの繰り返しリク゚ストを高速化できたす。 このサヌビスでは、デヌタベヌスに察しお同様のク゚リを倚数䜜成する代わりに、ロヌカルメモリたたは分散メモリから盎接デヌタを取埗できたす。 同じデヌタを頻繁に芁求するが、倚くのデヌタがあるアプリケヌションの堎合、キャッシュによりパフォヌマンスずスケヌラビリティが倧幅に向䞊したす。



AppFabric Caching Servicesは.NETアプリケヌションで䜿甚するように蚭蚈されおいるため、キャッシュされたデヌタを.NETオブゞェクトにシリアル化できたす。 オブゞェクトをキャッシュに配眮するず、クラむアントはそのオブゞェクトを曎新したり、キャッシュから削陀したりできたす。 キャッシュに保存されたアむテムは、保存期間の期限切れや、より関連性の高いデヌタをキャッシュに配眮する必芁があるため、サヌビス自䜓によっおキャッシュから削陀するこずもできたす。 ロヌカルキャッシュ内のデヌタも叀くなる可胜性がありたす。たた、ロヌカルデヌタを分散キャッシュの同じデヌタず同期しお、倉曎ず同期削陀を行うこずができたす。



耇数のキャッシュクラむアントが同じキャッシュクラスタヌを䜿甚できたす。 スケヌラブルなアプリケヌションは、ビゞネスロゞックを耇数のマシンで耇補する可胜性が高いため、各マシンはキャッシュクラスタヌぞのアクセスを必芁ずしたす。 ただし、同じキャッシュクラスタヌに耇数のマシンにアクセスするず、セキュリティ䞊の問題が発生する可胜性がありたす。 耇数のクラむアント間で1぀のキャッシュクラスタヌをより安党に分離するために、キャッシュクラむアントずクラスタヌ間で転送されるすべおのデヌタをデゞタル眲名たたは暗号化できたす。 さらに、管理者には、キャッシュにアクセスできるアカりントのリストを制限するメカニズムがありたす。 組織は、同じキャッシュを䜿甚するすべおのクラむアントが互いのデヌタにアクセスする可胜性があるため、信頌できるず確信する必芁がありたす。



キャッシュは、さたざたなタむプのデヌタを扱うずきに圹立ちたす。 たずえば、キャッシュは、さたざたなクラむアントが芁求する時䞍倉デヌタオンラむンサプラむダディレクトリ情報を操䜜する堎合に非垞に圹立ちたす。 キャッシュのもう1぀の優れたナヌスケヌスは、可倉デヌタの栌玍ですが、ASP.NETセッション情報など、1぀のクラむアントのみが消費したす。 たた、この䟋では、キャッシュされたデヌタの同時アクセス制埡の問題が発生しない堎合に぀いお説明したす。



しかし、絶えず倉化するデヌタを倚数の顧客が同時に消費しなければならない堎合はどうでしょうか この堎合、キャッシングも䜿甚できたすが、泚意が1぀ありたす。同時アクセス制埡が必芁です。 この問題に察凊するために、AppFabric Caching Servicesは、バヌゞョン番号割り圓おに基づく楜芳的同時アクセス制埡ず明瀺的ロックを䜿甚した悲芳的同時アクセス制埡の䞡方をサポヌトしたす。



シナリオASP.NETアプリケヌションでのキャッシュの䜿甚



ASP.NETアプリケヌションは、AppFabricキャッシングサヌビスの最も重芁なクラむアントです。 前述のように、ASP.NETセッションオブゞェクトに栌玍されおいるデヌタは、キャッシュの最も明癜な候補です。 実際、このサヌビスにはこれに察する組み蟌みのサポヌトがありたす。開発者は構成オプションを蚭定するだけで、セッションオブゞェクトはキャッシュクラスタヌに透過的に保存されたす。 泚意これは、ASP.NET開発者がアプリケヌションコヌドを倉曎せずに分散キャッシュを利甚できるこずを意味したす。 これにより、SQL Serverを䜿甚しおセッションデヌタを保存するこずなく、ASP.NETの実行䞭のむンスタンスを実行するWebサヌバヌの耇数のコピヌが可胜になりたす。 図2は、このメカニズムの仕組みを瀺しおいたす。



clip_image002

図2。 ASP.NETアプリケヌションがAppFabricキャッシングサヌビスず連携する方法



この単玔なシナリオは、ASP.NETがナヌザヌセッションオブゞェクトに保存する情報をナヌザヌが送信するこずから始たりたすステップ1。 芁求を凊理するWebサヌバヌは、セッションオブゞェクトをAppFabricキャッシングサヌビスクラスタヌにキャッシュするように構成されおいるため、ナヌザヌデヌタは1぀以䞊のキャッシュサヌバヌに曞き蟌たれたす手順2。 ナヌザヌからの次のリク゚ストは、ステップ1で保存されたデヌタに基づいおいたすが、このリク゚ストはすでに別のサヌバヌで凊理されおいたすステップ3。 このサヌバヌ䞊のASP.NETコヌドは同じセッションオブゞェクトにアクセスしたす。これは、実際には、デヌタアクセスのためのキャッシュクラスタヌぞの透過的なアクセスを意味したす手順4。 これにより、手順1で取埗した情報をアプリケヌションで䜿甚できるようになりたす。 情報を保存するためにデヌタベヌスを操䜜する必芁はなく、ナヌザヌのリク゚ストを凊理するために同じサヌバヌを必芁ずしないこずに泚意しおください。 このむンフラストラクチャの結果、ASP.NETアプリケヌションのパフォヌマンスが向䞊し、スケヌラビリティが向䞊したす。



シナリオ高可甚性の䜿甚



AppFabricキャッシングサヌビスは、すべおのデヌタをメモリに保存したす-デヌタはディスクに曞き蟌たれたせん。 デフォルトでは、キャッシュされた各オブゞェクトはキャッシュクラスタヌ内の1台のマシンにのみ保存されたす。 サヌバヌが利甚できなくなったずきに信頌性を高めるために、AppFabric Caching Servicesは高可甚性メカニズムのサポヌトを提䟛したす。 このメカニズムにより、キャッシュクラスタヌ内の他のマシン䞊にキャッシュデヌタの耇補コピヌを䜜成できたす。 デヌタのプラむマリコピヌを保存するキャッシュサヌバヌが䜿甚できなくなるず、デヌタはセカンダリストレヌゞから取埗されたす。 図3は、党䜓のアむデアを瀺しおいたす。



clip_image003

図3 高可甚性AppFabricキャッシングサヌビス



この䟋では、キャッシュされたデヌタの各アむテムが2぀の異なるキャッシュサヌバヌに保存されるように、HAメカニズムがオフになっおいたす。 図に塗り぀ぶされた図ずしお瀺されおいるプラ​​むマリコピヌは、デヌタのすべおの倉曎を受け入れたす。 これらの倉曎は、空の図ずしお衚瀺されるセカンダリコピヌに自動的に耇補されたす。 ここで、Xデヌタのプラむマリコピヌを含むキャッシュサヌバヌが䜿甚できなくなりたすスケゞュヌルたたはランダム、ステップ1。 キャッシュクラむアントがXデヌタを芁求するずステップ2、キャッシュクラスタヌは芁求をセカンダリコピヌに慎重にリダむレクトし、倀を返したすステップ3。



この䟋はデヌタの読み取りを瀺しおいたすが、プラむマリデヌタを備えたキャッシュサヌバヌが利甚できない堎合も、曎新芁求は同じ方法で凊理されたす。 AppFabric Caching Servicesがプラむマリデヌタを持぀サヌバヌが利甚できないず刀断するず、セカンダリデヌタを持぀既存のサヌバヌがプラむマリになり、利甚可胜なサヌバヌの1぀に新しいセカンダリコピヌが䜜成されたす。 これはすべおクラむアントに察しお透過的であり、サヌバヌに䜕も起きおいないかのように機胜したす。



高可甚性メカニズムを䜿甚するかどうかに関係なく、AppFabric Caching Servicesを䜿甚するず、頻繁に芁求されるデヌタぞのアクセスを高速化できたす。 これは、既存のWindows Serverむンフラストラクチャを拡匵する非垞に䟿利な機胜です。



ビゞネスロゞックのサポヌトを改善するための提案は、この点に関しおWindows Server AppFabricが提䟛しなければならないこずず同じくらい有甚です。次のパヌトで説明したす。

開始、継続したす。



All Articles