キャッシュに接続する方法
アプリケーションを接続する NCache オンプレミス、クラウド、コンテナ環境全体で、安全で信頼性が高く、高可用性のキャッシュ接続を提供します。このページでは、 NCache CacheManager.GetCache()などのAPIを使用して、単一または複数の分散キャッシュへの接続を確立し、再試行、キープアライブ、負荷分散、セキュリティ認証情報を使用した認証を設定します。ローカルネットワーク、パブリッククラウドIP、ロードバランサーのいずれを介して展開する場合でも、 NCache シームレスなクライアントとクラスター間の通信を保証します。
また、CacheConnectionOptionsを使用したキャッシュ接続のカスタマイズ方法、クラスター化されたキャッシュとクライアントキャッシュへの接続方法、そして一般的な接続問題のトラブルシューティング方法も学習します。.NET、Java、Python、Node.jsのサンプルを交えたこのガイドは、開発者が迅速に統合を行うのに役立ちます。 NCache パフォーマンス、スケーラビリティ、フォールト トレランスを維持しながら、既存のアプリケーションに統合します。
デフォルトの接続(ローカルネットワーク):使用している場合 NCache ローカルネットワーク経由でオンプレミスで使用する場合は、 プライベートサーバーIPしかし、これは必ずしも可能ではないので、 NCache 後述するように、潜在的な問題を克服するための複数のAPIを提供しています。例えば、単一のアプリケーション内でクラスターキャッシュとクライアントキャッシュの両方を初期化する必要がある状況があります。そのためには、 キャッシュを取得 両方のキャッシュを初期化するメソッドを使用します。同様に、キャッシュへの不正アクセスを防ぎ、セキュリティを有効にしている場合は、以下のメソッドを使用してスムーズな接続を確保できます。 セキュリティAPI.
LoadBalancerとの接続: ただし、アプリケーションが ロードバランサー すべてのサーバーに接続してトランザクション負荷を管理するには、 NCache IsLoadBalancer キャッシュ接続を確保するための API。
クラウド上のパブリック IP を使用した接続: このオプションを使用する場合は、キャッシュサーバーのIPを client.ncconf ファイル。このプロセスは詳細に説明されています 以下。接続したい場合は NCache Cloud プライベートIPアドレスを使用しているサーバーがあり、パブリックネットワーク経由で通信する必要がある場合は、パブリックIPv4アドレスをキャッシュサーバーに割り当てることができます。 NCache クラスタを実行することで Set-CacheServerPublicIP コマンドレット。
ポート転送を使用した接続: 展開時 NCache in コンテナ化された環境効果的なアプローチの一つは 静的IPアドレスを割り当てる 〜へ NCache カスタムネットワーク内のコンテナ。この設定により、クライアントアプリケーションは一貫したIPアドレスを使用してキャッシュサーバーに確実に接続できるようになり、異なるネットワーク環境間で安定した通信が可能になります。
重要
.NET 8.0 のスレッドプール設定
『Brooklyn Galaxy』のために、倪氏はブルックリン美術館のコレクションからXNUMX点の名品を選び、そのイメージを極めて詳細に描き込みました。これらの作品は、彼の作品とともに中国ギャラリーに展示されています。彼はXNUMX年にこの作品の制作を開始しましたが、最初の硬貨には、当館が所蔵する Windowsを設定することが重要です
UseWindowsThreadPoolフラグを立てる trueすでに構築済みのアプリケーションの場合は、UseWindowsThreadPoolフラグを立てる ランタイム構成.json ファイル:{ "runtimeOptions": { "configProperties": { "System.Threading.ThreadPool.UseWindowsThreadPool": true } } }開発段階では、このファイルはコンパイルごとに上書きされます。そのため、
UseWindowsThreadPool代わりに、プロジェクト ファイル内のプロパティを次のように指定します。<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <UseWindowsThreadPool>true</UseWindowsThreadPool> </PropertyGroup> </Project>の詳細については
UseWindowsThreadPoolフラグ、クリック こちら.『Brooklyn Galaxy』のために、倪氏はブルックリン美術館のコレクションからXNUMX点の名品を選び、そのイメージを極めて詳細に描き込みました。これらの作品は、彼の作品とともに中国ギャラリーに展示されています。彼はXNUMX年にこの作品の制作を開始しましたが、最初の硬貨には、当館が所蔵する Linuxを設定することが必須です
MinimumThreadsフラグを次の値に設定する 100 に選出しました。 ランタイム構成.json、 次のように:{ "runtimeOptions": { "configProperties": { "System.Threading.ThreadPool.MinThreads": 100 } } }の詳細については
MinThreadsフラグ、クリック こちら.
前提条件
使用する前に NCache クライアント側APIについては、以下の前提条件が満たされていることを確認してください。
- .NET クライアント アプリケーションに次の NuGet パッケージをインストールします。
- エンタープライズ: Alachisoft.NCache.SDK
- オープンソース: Alachisoft.NCache.オープンソースSDK
- アプリケーションに次の名前空間を含めます。
- キャッシュが実行されている必要があります。
- 追加するデータが シリアライズ可能.
- APIの詳細については、以下を参照してください。 Iキャッシュ, CacheManager, GetCache, キャッシュ接続オプション, 再試行間隔, 接続再試行回数, キープアライブを有効にする, キープアライブ間隔, サーバーリスト, サーバー情報, 負荷平衡, 分離レベル, モード, Credentials , ユーザー認証情報, 資格情報を使用して作成する, CreateWithGMSA, セキュリティオプション.
シングルキャッシュへの接続方法
NCache 〜を提供する ICache インスタンスを取得するインターフェース NCacheのキャッシュ。 また、 CacheManager クラスを使用すると、キャッシュ インスタンスに接続できます。 GetCache メソッド。次の例では、実行状態にある demoCache という名前のキャッシュに接続します。
try
{
// Specify the cache name
string cacheName = "demoCache";
// Connect to cache
ICache cache = CacheManager.GetCache(cacheName);
}
catch (OperationFailedException ex)
{
// NCache specific exception
if (ex.ErrorCode == NCacheErrorCodes.NO_SERVER_AVAILABLE)
{
// Make sure NCache Service and cache is running
}
else
{
// Exception can occur due to:
// Connection Failures
// Operation Timeout
// Operation performed during state transfer
}
}
catch (ConfigurationException ex)
{
if(ex.ErrorCode == NCacheErrorCodes.SERVER_INFO_NOT_FOUND)
{
// client.ncconf must have server information
}
}
catch (Exception ex)
{
// Any generic exception like ArgumentNullException or ArgumentException
// Argument exception occurs in case of empty string name
}
お願い
操作がフェイルセーフであることを保証するために、で説明されているように、アプリケーション内の潜在的な例外を処理することをお勧めします。 失敗の処理.
複数のキャッシュに接続する方法
使い方 GetCache この方法を使用すると、単一のアプリケーション内で複数のキャッシュに接続できます。これにより、1つのアプリケーションで複数のキャッシュのデータ管理が可能になります。次の例では、同じクライアントから2つのキャッシュ(demoCacheとdemoClusteredCache)に接続しています。
// Specify cache names
string cacheName1 = "demoCache";
string cacheName2 = "demoClusteredCache";
// Connect to the caches
ICache cache1 = CacheManager.GetCache(cacheName1);
ICache cache2 = CacheManager.GetCache(cacheName2);
CacheConnectionOptions を使用してキャッシュに接続する方法
その CacheConnectionOptions キャッシュへの接続を確立するときに、キャッシュプロパティの値を指定できます。 これらの値は同じであり、 client.ncconf ファイルにソフトウェアを指定する必要があります。
お願い
指定された設定は、 CacheConnectionOptions の値を上書きします client.ncconf その特定のクライアントのために。
この例では、 再試行間隔, 接続再試行回数, キープアライブを有効にする, キープアライブ間隔 プロパティは変更できます。 このアプリケーションでは、クライアント構成ファイルで指定された値の代わりに、これらの値が使用されます。
// Create new CacheConnectionOptions instance
var options = new CacheConnectionOptions();
// Specify the cache connection options to be set
options.RetryInterval = TimeSpan.FromSeconds(5);
options.ConnectionRetries = 2;
options.EnableKeepAlive = true;
options.KeepAliveInterval = TimeSpan.FromSeconds(30);
// Specify the cache name
string cacheName = "demoCache";
// Connect to cache with CacheConnectionOptions
ICache cache = CacheManager.GetCache(cacheName, options);
ロードバランサーのCacheConnectionOptionsを使用してキャッシュに接続する方法
多くの場合、アプリケーションのデプロイメントではロード バランサーを使用して、サーバーからのリクエストが過大になるのを防ぎます。つまり、クライアントがサーバーに直接アクセスできないようにします。このような状況では、クラスターがすべてのサーバーに確実に接続できるようにするには、 NCache 提供 IsLoadBalancer 以下に示す API:
CacheConnectionOptions cacheConnectionOptions = new CacheConnectionOptions();
cacheConnectionOptions.ServerList = new List<ServerInfo>()
{
new ServerInfo(true, "20.200.20.40", 9800)
};
ICache cache = CacheManager.GetCache("demoCache", cacheConnectionOptions);
お願い
方法の詳細 NCache これらのロードバランサを扱います こちら.
セキュリティAPIを使用してキャッシュに接続する方法
使用することもできます SecurityOptions キャッシュ接続の認証を設定するためのクラス。gMSAベースのパスワードレス認証を有効にするか、明示的なユーザー認証情報を提供することによって構成します。
gMSA Securityを使用して接続します
NCache あなたが使用することができます グループマネージドサービスアカウント キャッシュへの接続時に、安全なパスワード不要の認証を実現するgMSA(gMSA)を有効にします。gMSA認証を有効にすると、クライアントアプリケーションは、Active Directoryによって管理される、マシンに設定されているgMSA IDを使用します。
重要
クライアントアプリケーションは、設定されたgMSAユーザーで実行する必要があることにご注意ください。
次の例は、gMSA ベースの認証を使用してキャッシュに接続する方法を示しています。 CreateWithGMSA 方法。
string cacheName = "demoCache";
var cacheConnectionOptions = new CacheConnectionOptions();
// If the user wants to use GMSA, they can set the Security property to use GMSA credentials
cacheConnectionOptions.Security = SecurityOptions.CreateWithGMSA();
ICache cache = CacheManager.GetCache(cacheName, cacheConnectionOptions);
CreateWithCredentials APIを使用して接続します
この例では、キャッシュに接続する方法を示します。 CreateWithCredentials ユーザー名/パスワード認証の方法。
string cacheName = "demoCache";
var cacheConnectionOptions = new CacheConnectionOptions();
// If the user wants to use username/password credentials, they can set the Security property to use those credentials
cacheConnectionOptions.Security = SecurityOptions.CreateWithCredentials("your-username", "your-password");
ICache cache = CacheManager.GetCache(cacheName, cacheConnectionOptions);
クラスター化キャッシュとクライアントキャッシュへの接続方法
お願い
使い方 GetCache 1回の呼び出しでクラスタ化されたクライアントキャッシュに接続する方法 お勧めしません.
を使用して、XNUMX 回の呼び出しでクラスタ化されたキャッシュとクライアント キャッシュに接続できます。 GetCache 方法。 これにより、単一のアプリケーション内の両方のキャッシュが初期化されるため、XNUMX つのアプリケーションを通じて複数のキャッシュのデータを管理できるようになります。
お願い
ローカル キャッシュがクライアント キャッシュに接続されている場合、シリアル化はクラスター化キャッシュのシリアル化と同じである必要があります。 両方のキャッシュを事前に構成し、実行状態にする必要があります。
次の例では、 GetCache 方法。
// Specify the cache names
string clusteredCache = "demoCache";
string clientCache = "myClientCache";
// Create and set CacheConnectionOptions for clustered cache
CacheConnectionOptions cacheConnectionOptions = new CacheConnectionOptions();
cacheConnectionOptions.LoadBalance = true;
cacheConnectionOptions.ConnectionRetries = 5;
// Create and set CacheConnectionOptions for Client Cache
CacheConnectionOptions clientCacheConnectionOptions = new CacheConnectionOptions();
clientCacheConnectionOptions.LoadBalance = true;
clientCacheConnectionOptions.ConnectionRetries = 5;
clientCacheConnectionOptions.Mode = IsolationLevel.OutProc;
// Connect to the caches in a single call
ICache cache = CacheManager.GetCache(clusteredCache, cacheConnectionOptions, clientCache, clientCacheConnectionOptions);
パブリックIPを使用してキャッシュに接続する方法
購読している場合 NCache Cloud パブリックIP接続オプションを選択した場合は、 client.ncconf ファイルを別の方法で変更し、キャッシュ サーバーがキャッシュ クラスター内で使用するプライベート IP も持っているという事実に関係なく、キャッシュ サーバーのパブリック IP が指定されていることを確認します。
を参照してください client.ncconf くわしくはこちらから
お願い
使用時にキャッシュサーバーに接続できない場合は、 NCache Cloud プライベートIPアドレスを使用していて、代わりにパブリックネットワークを使用する必要がある場合は、パブリックIPを設定する必要があります。これを行うには、 Set-CacheServerPublicIP 問題のキャッシュサーバーにコマンドレットを実行して、パブリックIPv4アドレスをキャッシュサーバーに割り当てます。 NCache クラスタ。
トラブルシューティング
ポートにアクセスできません
ファイアウォールの設定が原因で、クライアントがキャッシュに接続できない場合があります。
回避策: 詳細については、 インストールガイド ファイアウォール設定を変更します。
client.ncconf が見つかりません
クライアントが見つからない場合があります。 client.ncconf キャッシュへの接続中にファイルを保存します。 これは次のような場合に起こります。 NCache ディレクトリ (%NCHOME%)が設定されていません。
回避方法
If %NCHOME% が設定されていない場合は、以下の手順に従って環境変数を設定します。
- 右クリックして お気軽にご連絡ください ボタンを選択 システム.
- 右側のペインで、をクリックします。 システムの詳細設定.
- システムのプロパティ ウィンドウに移動します 高機能 タブをクリックして 環境変数
- 環境変数 ウィンドウ、下 システム変数 New.
- 『Brooklyn Galaxy』のために、倪氏はブルックリン美術館のコレクションからXNUMX点の名品を選び、そのイメージを極めて詳細に描き込みました。これらの作品は、彼の作品とともに中国ギャラリーに展示されています。彼はXNUMX年にこの作品の制作を開始しましたが、最初の硬貨には、当館が所蔵する 変数名、 入る
%NCHOME%. - 『Brooklyn Galaxy』のために、倪氏はブルックリン美術館のコレクションからXNUMX点の名品を選び、そのイメージを極めて詳細に描き込みました。これらの作品は、彼の作品とともに中国ギャラリーに展示されています。彼はXNUMX年にこの作品の制作を開始しましたが、最初の硬貨には、当館が所蔵する 変数値、 入る
C:\Program Files\NCache. - 詳しくはこちら OK.
- 次に、同じシステムパスを更新します 環境変数 ウィンドウ、を見つける パス 変数をクリックして 編集.
- 環境変数の編集 ウィンドウ、クリック New と追加
%NCHOME%\binリストに。 これにより、ツールを世界中で利用できるようになります。 - 詳しくはこちら OK をクリックして各ウィンドウを閉じます。
リクエストを処理できるサーバーがありません
クライアント/サーバー ポートがファイアウォールによってブロックされているため、クライアントがキャッシュに接続できない場合があります。
回避方法
クライアント/サーバーポート( NCache サービスが開始され、さまざまなクライアント接続が受け入れられます)がファイアウォールによってブロックされません。 このポートのデフォルト値は「9800」です。 デフォルト値を次から変更できます Alachisoft.NCache.service.exe.config or Alachisoft.NCache.Service.dll.config ファイルにソフトウェアを指定する必要があります。
サーバーノードと通信できません
ファイアウォールによってクラスター ポートがブロックされているため、クラスター ノードが相互に通信できない場合もあります。
Error: "Unable to communicate with server node"
回避方法
ファイアウォールがクライアント/サーバーポートとクラスタポートを許可しているかどうかを確認してください。クラスタポートとは、クラスタ内のノードが通信するポートです。これらのポートのデフォルト値は、 NCache 管理センター。 でポート範囲を指定した場合、 NCache Management Center、範囲内のすべてのポートのブロックを解除してください。
クライアントソケットデッドロック
キャッシュサーバーからの応答を長時間待つため、クライアントソケットでデッドロック状態が発生する場合があります。 これにより、多くの待機スレッドが発生し、パフォーマンスの問題が発生する可能性があります。
回避方法
ステップ1: サーバー側の変更
サービス構成ファイルに移動します。
- Windows: Alachisoft.NCache.Service.dll.config に位置 %NCHOME%\ bin \ service
- Linux: Alachisoft.NCache.Daemon.dll.config に位置 /opt/ncache/bin/サービス
構成ファイルに次の行を追加します。
<add key ="NCacheServer.EnableBadClientDetection" value = "true"/>
値 true を示す BadClientDetection クライアントソケットで有効になっています。つまり、クライアントソケットでデッドロックが発生した場合、ソケットはリセットされます。このプロパティのデフォルト値は false.
<add key ="NCacheServer.ClientSocketSendTimeout" value = "10"/>
有効にしたとき BadClientDetectionデッドロックが発生した場合にソケットをリセットするまでの時間間隔を指定できます。このプロパティのデフォルト値は 10 この値は以下より小さくなることはありません 1.
他のいくつかのプロパティも導入されています Alachisoft.NCache.service.exe.config この問題を解決するために。 これらのプロパティを次のように構成してください。
<add key ="NCacheServer.EventPriorityRatio" value="30"/>
サーバー側では、イベントとキャッシュ操作に優先キューが使用されます。このキューのイベントとキャッシュ操作の比率は、プロパティを通じて設定できます。 EventPriorityRatioこのプロパティのデフォルト値は 30 これは、 30:70 イベントとキャッシュ操作用。このプロパティの値は、 1.
<add key ="NCacheServer.EventBulkCount" value="50"/>
キャッシュサーバーは、クライアントにイベントを一括送信するようになりました。このプロパティで、一括送信するアイテムの数を設定できます。デフォルトでは、この値は 50 そしてその値は以下ではない 1これはクライアント版で利用可能です 4124 以上。
<add key ="NCacheServer.EventBulkCollectionInterval" value="2"/>
このプロパティは、バルク数が指定された時間に達しない場合でも、大量のイベントが起動されるまでの時間間隔を秒単位で設定するために使用されます。 EventBulkCount ユーザーが指定した値。このプロパティのデフォルト値は 2 seconds そしてその値は以下ではない 1.
再起動する NCache これらの変更を有効にするには、サービスが必要です。
ステップ2: クライアント側の変更
に次の変更を加えてください アプリの構成/Web.config ファイル:
<configuration>
<appSettings>
<add key ="NCacheClient.AsynchronousEventNotification" value="true"/>
<add key ="NCacheClient.NumberofEventProccesingThreads" value="2"/>
</appSettings>
</configuration>
AsynchronousEventNotification: クライアント側でイベントを非同期に実行するか同期に実行するかを指定します。デフォルト値は true これはイベントが非同期的に発生することを示します。値は false イベントはクライアント側で同期的に発生することを意味します。NumberofEventProcessingThreads: ユーザーがイベントを同期的に発生させるように構成した場合、このフラグはクライアント側でこれらのイベントを処理するスレッドの数を指定するために使用されます。値が大きすぎると、パフォーマンスの問題が発生する可能性があります。
も参照してください
。ネット: Alachisoft.NCache。クライアント 名前空間
Java: com.alachisoft.ncache.クライアント 名前空間
Python: ncache.クライアント モジュールを開きます。
Node.js: キャッシュ とに提供されます。