分散キャッシュクライアント
の用法 NCache 単純なKey-Valueストアから高度なものまで、さまざまなユースケースにまたがっています SQL検索 および Pub / Sub。 クライアント アプリケーションには、コンソール アプリケーション、Windows サービス、Web アプリケーション、および Web サービスが含まれますが、これらに限定されません。 クライアント ライブラリ (SDK) には、.NET、Java、NodeJS が含まれます。 さらに、Python と Scala のサポートも提供されます。 関連する SDK を使用すると、クライアント アプリケーションは XNUMX つ以上のキャッシュに接続できます。
Note
この機能は以下でも利用できます NCache Professional.
分散キャッシュクライアントの通信方式
データ交換形式としての Google Protobuf: クライアントは、永続的な TCP ソケットを介して分散キャッシュと通信します。 NCache クライアントは使用します Googleプロトコルバッファ (Protobuf) をキャッシュサーバーと通信するためのプロトコルとして使用します。 Protobuf を使用すると、古いバージョンのクライアントに柔軟性が提供されます。 NCache、新しいキャッシュ サーバー バージョンと通信します。
要求-応答ベースの並列要求の実行: NCache クライアントはマルチスレッドをサポートします。 これらのアプリケーションは、キャッシュに対して並列リクエストを行うことができます。 NCache クライアント/サーバー通信における RequestId ベースの要求/応答プロトコルに従い、すべての要求に一意の RequestId が割り当てられます。 キャッシュ クライアントとキャッシュ サーバーの間に単一の TCP 接続があるにもかかわらず、クライアントは、送信済みのリクエストの応答を待たずに、一意の RequestId を持つ複数のリクエストをキャッシュ サーバーに送信できます。 したがって、各リクエストは完全に独立しています。 NCache サーバーはリクエストの並列実行もサポートしています。 このアーキテクチャにより、アプリケーションは、操作を互いに待機させることなく、クライアントからキャッシュ サーバーまでの複数の並列操作を実行できるため、最大のパフォーマンスとスケーラビリティが実現します。
パイプラインのリクエスト: パイプライン 単一のソケット (I/O) 操作で複数のリクエストを結合して送信することを指します。 アプリケーションが I/O 操作を実行するたびに、ユーザーからカーネルへのモード切り替えが発生しますが、これはコストのかかる操作です。 パイプライン 少ない I/O 操作で同じタスクを実行することで、このコストを回避します。 パイプライン アプリケーションのパフォーマンスが何倍にも向上します。 NCache クライアント側とサーバー側の両方でパイプラインをサポートします。
キャッシュトポロジの認識: NCache クライアントはキャッシュ トポロジを認識します。 キャッシュ クライアントが最初のキャッシュ サーバーに接続すると、トポロジを含むキャッシュ メタデータが取得されます。 クライアントがキャッシュ サーバーとの接続をどのように確立するか、およびクライアント操作をどのように実行するかは、キャッシュの基礎となるトポロジによって異なります。 たとえば、データはさまざまなキャッシュ サーバーに分散されます。 パーティション化 および パーティション-レプリカ トポロジ。 したがって、クライアントはキャッシュ クラスター内の各サーバーとの TCP 接続を確立し、最新のデータ分散マップを取得します。 クライアントは、関係するデータを含むパーティションに対して読み取りおよび書き込み操作を直接実行します。 同様に、 複製 トポロジには同じデータセットが含まれています。 したがって、クライアントは XNUMX つのキャッシュ サーバーにのみ接続します。
シームレスな方法で接続障害を処理する: NCache クライアントは、キャッシュサーバーとの永続的な接続を維持します。 ネットワークの不具合が原因でこの接続が切断された場合、 NCache クライアントにはバックグラウンド接続再確立メカニズムが装備されています。 このメカニズムは、クライアントとサーバー間のネットワーク接続が再開されるとすぐに、障害が発生したサーバーとの接続を自動的に確立します。 これらはすべて、クライアント アプリケーションの介入なしでシームレスに行われます。
データのシリアル化: アプリケーションデータは、キャッシュサーバーに送られる前にシリアル化プロセスを通過します。 NCache 両方をサポート バイナリおよびJSONシリアル化。 キャッシュの構成時に、シリアル化形式のいずれかを選択できます。 キャッシュ クライアントは、キャッシュへの接続時にキャッシュ サーバーからシリアル化形式を取得します。 次に、シリアル化形式に従ってアプリケーション データをシリアル化します。
データ暗号化: アプリケーションデータの暗号化は、有効にできるオプション機能です。 もしも 暗号化 が構成されている場合、クライアントはシリアル化された後にアプリケーションデータを暗号化します。 クライアントは、キャッシュに接続すると、暗号化関連の構成をキャッシュサーバーからフェッチします。
データ圧縮: 圧縮 データが非常に大きい場合は、アプリケーションデータの数を増やすことでキャッシュサイズを減らすことができます。 データは最初にシリアル化され、次に暗号化され(暗号化が有効になっている場合)、最後にキャッシュクライアントによって圧縮されてからキャッシュにディスパッチされます。 キャッシュクライアントは、キャッシュへの接続時にキャッシュサーバーから圧縮関連の構成をフェッチします。
キャッシュとの接続
キャッシュ クライアントは、キャッシュに接続するためにサーバー情報を必要とします。 サーバー情報は、クライアント構成ファイル (client.ncconf )または キャッシュ接続オプション。 クライアントは、提供されたキャッシュサーバーリストを反復処理し、サーバーで実行されているキャッシュに接続しようとします。 キャッシュインスタンスが特定のサーバーで実行されていない場合は、リストに示されている次のサーバーに移動します。 クライアント接続は通常、次の手順で実行されます。
クライアントは最初にとのTCP接続を確立します NCache サービスオーバー ポート 9800.
次に、クライアントは、構成されたキャッシュサーバーの完全なリストを要求します。 このようにして、キャッシュサーバーの更新されたリストがあります。
次に、クライアントはキャッシュに初期化要求をサーバーに送信します。これには、キャッシュ名とセキュリティ資格情報が含まれます。 キャッシュセキュリティが有効になっている。 すべてのキャッシュは個別のプロセスで実行されます。 あなたが持っている場合 .NET Framework ベースのインストール NCache サーバー側では、サービスがクライアント接続をキャッシュプロセスにシームレスに引き渡し、クライアントはキャッシュに正常に接続します。 の .NET Core または.NET6以降のインストールでは、サービスは、キャッシュが接続をリッスンしているクライアントとポート情報を共有します。 次に、クライアントはキャッシュプロセスとの直接接続を確立し、初期化要求を送信します。
Note
NCache Windowsで必要なすべてのポートを開くようにファイアウォールを自動的に構成します。 ただし、開く必要があります NCache Linuxのポート ファイアウォールの構成.
クライアントがと接続している場合 複製されたキャッシュ クライアントの負荷分散が有効になっている場合、クライアントは、接続されているクライアントの数が最も少ないサーバーを要求します。 次に、最も負荷の少ないサーバーに接続します。
クライアントがと接続している場合 パーティション化 または パーティション-レプリカ キャッシュし、サーバーの配布マップを要求します。 マップを受信すると、配布マップに存在するキャッシュサーバーとの接続を確立します。
クライアントは、次のようなさまざまなキャッシュ構成も要求します。
- 圧縮しきい値 および キャッシュシリアル化形式
- 暗号鍵 クライアントとキャッシュサーバー間で共有されます
- 構成済みクエリインデックス 登録されているコンパクトタイプなど
も参照してください
キャッシュトポロジ
キャッシュクラスター
ローカルキャッシュ
クライアントキャッシュ
WANレプリケーション用のブリッジ