NCache NHibernateの第XNUMXレベルのキャッシュとして

使用する方法を学びます NCache NHibernate の XNUMX 次キャッシュとして。 NCache web.configまたはapp.configの変更を介してプラグインできるNHibernateの第XNUMXレベルのキャッシュプロバイダーを提供します。 NCache また、これにデータベース同期機能を実装しているため、データベースと同期するクラスを指定できます。 NCache このために、SqlDependencyまたはOLEDB準拠のデータベース化された依存関係を指定できます。

NCache は、アプリケーションのスケーラビリティとパフォーマンスを目的としたエンタープライズ分散キャッシュ ソリューションです。 今日のチュートリアルでは、レベル 2 キャッシュ プロバイダーを使用して NHibernate アプリケーションをスケールアウトする方法を見ていきます。 NCache.

NHibernate L1 キャッシュの制限事項

NHibernate はアプリケーションにとって優れた ORM ツールであり、さまざまなチーム間でのコーディング標準を簡素化します。

NHibernate L1 キャッシュの制限事項
NHibernate L1 キャッシュの制限事項

Hibernate では、デフォルトでインプロセス キャッシュが提供され、トランザクションごとにワーカー プロセス内にデータを一時的に保持できます。 これは単一サーバー アプリケーションでは問題なく機能しますが、エンタープライズ アプリケーションではパフォーマンスのボトルネックになります。

エンタープライズ アプリケーションでは、通常、負荷分散シナリオで複数の Web サーバーがあり、それぞれのサーバー上で複数のワーカー プロセッサが実行されます。 そのため、各ワーカー プロセスからの同じデータに対して複数の冗長なクエリがデータベースに配置されることになり、最終的にアプリケーションの速度が低下し、また各ワーカー プロセス側の独自のメモリに個別に冗長なストレージが作成されることになります。ユーザーベースを拡大する必要があるときにスケールアウトできません。

Hibernate L2 キャッシュプロバイダーのモデル

したがって、これらの制限を克服するには Hibernate はレベル 2 キャッシュ プロバイダーを提供します、ここで第 XNUMX レベル キャッシュを接続できます。

  • 理想的には、L2 キャッシュは
    • プロセス外
    • インメモリ
    • 分散キャッシュ
  • 信頼性と高可用性
  • スケーラブル

Hibernate L2 キャッシュプロバイダーモデル

第 XNUMX レベル キャッシュは、インプロセス キャッシュと組み合わせて使用​​されます。 初めてデータベースからデータを取得するたびに、Hibernate はそのデータをすべてのワーカー プロセスで共有される XNUMX 次キャッシュに自動的にプッシュします。

アプリケーションのパフォーマンスを向上させるには、XNUMX 番目のレベル キャッシュをメモリ内キャッシュにするのが理想的です。 ワーカー プロセスがリサイクルされてもフラッシュされないアウトプロセス キャッシュである必要があります。 これは分散する必要があるため、異なる Web サーバー上の複数のワーカー プロセス間で共有できます。

増やすことしかできないことを忘れないでください。 アプリケーションのスケーラビリティとパフォーマンス基礎となるキャッシュ インフラストラクチャが拡張性が高く、パフォーマンス指向である場合。

NCache - Hibernate L2 キャッシュプロバイダー

したがって、ここではそのようなレベル 2 キャッシュ プロバイダーを提供します。 NCache.

NCache - Hibernate L2 キャッシュプロバイダー
NCache - Hibernate L2 キャッシュプロバイダー

これはアウトオブプロセスのインメモリ分散キャッシュ ソリューションであり、 動的クラスタリング 機能があり、複数のサーバーにまたがります。 アプリケーションからのトランザクション負荷は、実行時にすべてのキャッシュ サーバーに均等に分散されるため、パフォーマンスが向上し、 NCache キャッシュ サーバーのいずれかを失った場合に、一貫したフェイルオーバーを提供するために、クラスター全体にデータを複製したままにします。

NCache は、同期レプリケーション モードと非同期レプリケーション モードの両方をサポートします。 したがって、パフォーマンスのオーバーヘッドを発生させることなく、データの複製を維持できます。 のパフォーマンス NCache キャッシュ層にサーバーを追加すると、直線的に増加します。 キャッシュ サイズに制限がないため、データ サイズを好きなだけ増やすことができます。

また、実行時により多くのサーバーをキャッシュ クラスターに動的に組み込んで、トランザクション機能を強化し、メモリを増やすこともできます。

また、キャッシュのパフォーマンス、キャッシュ上のクライアント アプリケーションのアクティビティ、キャッシュによって消費されるさまざまなシステム リソースを一目で確認できるダッシュボード スタイルのモニタリングも提供します。

右側の図は、 パーティション-レプリカトポロジ、データがパーティション化され、複数のサーバーにレプリケートされます。 パーティション レプリカは、パーティション レプリカで最も人気のあるトポロジです。 NCache.

NCache NHibernate の分散レベル 2 キャッシュ

これが高レベルのアーキテクチャ図です。

高レベルのアーキテクチャ図
高レベルのアーキテクチャ図

このレベル 2 プロバイダーをプラグインすると、 NCache エンタープライズ アプリケーションでは、アプリケーションのコードを変更する必要はありません。 設定をいくつか変更するだけで済みます。 web.config or app.config、それについて話します。 したがって、前のトランザクションですでにデータをフェッチしていれば、データベースへの冗長な呼び出しは発生しません。

このような負荷分散 Web ファームでは、データベースから初めてデータを取得すると、データは NHibernate によって自動的に XNUMX 番目のレベル キャッシュにプッシュされ、このキャッシュはすべての Web サーバーで共有されます。 したがって、データベースの負荷を軽減するのに役立ちます。

NCache レベル 2 キャッシュの構成可能な機能

したがって、構成を変更すると、XNUMX 次レベル キャッシュ プロバイダーの多くの機能を構成できるようになります。

  • Hibernate 領域を使用する
  • 次のコマンドを使用してキャッシュ オブジェクトを期限切れにします。
    • スライディングオアダイタイム
    • 絶対有効期限
  • データベースとの同期:
    • SQLの依存関係
    • ポーリングの依存関係
  • 同期を使用します。 / 非同期。 キャッシュ操作
  • キャッシュ項目の優先順位を設定する

NCache レベル 2 キャッシュの構成可能な機能

たとえば、NHibernate リージョンを使用したり、キャッシュ オブジェクトが絶対有効期限またはアイドル時間有効期限で期限切れになるように設定したり、SQL 依存関係を構成したりできます。 データベースの同期。 同期キャッシュ操作と非同期キャッシュ操作の両方がサポートされており、キャッシュ項目の優先順位を構成することもできます。

そこで、構成するための簡単なステップバイステップの実践セッションを説明します。 NCache サンプル アプリケーションのレベル 2 キャッシュ プロバイダー。

私はあなたに提案します 無料の 30 日間エンタープライズ版をダウンロード 当社のウェブサイトから。 これは、評価段階であっても完全に機能し、機能が豊富な製品です。

NHibernate 統合サンプル NCache

あなたがインストールすると NCache、システム上では次のようになります。

Hibernate 統合サンプル
Hibernate 統合サンプル

大量の Visual Studio サンプルがインストールされます。 たとえば、NHibernate サンプルを Visual Studio で開いてみましょう。 Video Studio 2010 を使用している場合は、サンプルの再構築が必要になる場合があります。変換も必要になる場合があります。

次の第 XNUMX レベル キャッシュ プロバイダーの app.config に対して行う必要がある構成変更を見てみましょう。 NCache.

app.config ファイル
app.config ファイル

' という名前のセクションを定義するだけで済みます。ncache' app.config でキャッシュ プロバイダーのプロパティを追加すると、次のようにキャッシュ プロバイダーのプロパティを追加できます。

また、 NCache セクション自体を複数の領域で構成します。 これらの領域は NHibernate 領域です。 各領域は、次の異なるキャッシュ名にマップされます。 NCache.

したがって、ここには、NHibernate リージョンを指定していないすべてのエンティティに対応するデフォルトのリージョンがあり、この「Customer」リージョンのような特定の名前のリージョンがあります。 各リージョン内で、そのリージョンに属するクラスごとに複数のプロパティを指定できます。

Hibernate リージョン
Hibernate リージョン

たとえば、SQL 依存関係を設定し、キャッシュ項目の優先順位を設定し、同期または非同期を使用し、有効期限戦略を相対時間またはアイドル時間に設定します。

キャッシュの実行

したがって、サンプルを実行するには、いくつかのキャッシュが必要です。 デフォルトのキャッシュと「myPartitionReplicaCache」が実行されています。 NCache マネージャー.

に行きましょう NCache マネージャー、現在、「myPartionedReplicaCache」とデフォルトのキャッシュを 2 つのサーバー設定で設定しています。 アプリケーションを実行して顧客リストを表示してみましょう。たとえば、データベースからデータを取得したら、両方のサーバーにデータをプッシュするリクエスト/秒を観察してみましょう。

均等に応答されたリクエスト/秒
均等に応答されたリクエスト/秒

したがって、これらのサーバーの両方に約 49 プラス 42 の項目があり、両方に均等に分散されており、クエリを再度実行すると、データベースにアクセスする代わりに、第 XNUMX レベル キャッシュ クラスターからこれらの結果を直接取得できるようになります。 したがって、両方のサーバーから均等に応答されたリクエスト/秒を観察してください。

キャッシュ信頼性テスト

信頼性試験も承ります。 キャッシュ サーバーの XNUMX つを停止しても、キャッシュ クラスターがアイテムを提供し、残りのサーバーからアイテムを回復できることがわかります。

そのためにはサーバーの 2 つを停止する必要があるので、それを実行するつもりです。 サーバー 21 と 22 の 22 台があります。クラスターから外れたかのように XNUMX を停止し、クエリを再実行します。

キャッシュサーバーの停止
キャッシュサーバーの停止

49 プラス 42 が表示され、91 個のアイテムはいずれかのサーバーでまだ利用可能です。 これらはもう一方のサーバーから復元されているので、クエリを再実行して顧客リストをもう一度表示すると、このサーバーまたはクラスターからすべてのアイテムを取得できるはずです。 このサーバーからのリクエスト/秒、フェッチ/秒を確認できます。

信頼性テストに成功しました
信頼性テストに成功しました

したがって、実行時にキャッシュ サーバーの XNUMX つが利用できない場合でも、信頼性の高いキャッシュが確立されます。 他のキャッシュ サーバーはデータを回復し、クエリに適切に応答できます。 同時に、データベースの負荷も軽減されます。 データベースに冗長なクエリが送信されることはなくなります。

NHibernate の統合コード NCache

NHibernate の統合コードは次のとおりです。 NCache、私が開いたプロジェクトでわかるように、このソース コードは、特定の NHibernate バージョンに合わせて最適化またはカスタマイズするために利用できます。

NHibernate の統合コード NCache
NHibernate の統合コード NCache

あなたが NCache インストールフォルダー、ここにコードがあります。 それでは、今日はお時間をいただきまして誠にありがとうございます。今日は、その様子をご覧いただきました。 NCache 役に立つかもしれません。 信頼性と拡張性の高さ NCache つまり、NHibernate アプリケーションのパフォーマンスを向上させるためです。 今後の最新情報をお楽しみに NCache。 今後のチュートリアルでさまざまな機能について説明します。 ご質問がございましたら、こちらまでメールでお問い合わせください support@alachisoft.com

お問い合わせ(英語)

電話
©著作権 Alachisoft 2002 - . All rights reserved. NCache はダイヤテック株式会社の登録商標です。