2.3. クライアントのインテリジェンス


Hot Rod クライアントのインテリジェンスとは、リクエストを効率的にルーティングするために Data Grid サーバーを見つけるメカニズムを指します。

BASIC インテリジェンス

クライアントは、Data Grid クラスターまたはキーハッシュ値に関する情報を保存しません。

トポロジー対応

クライアントは、Data Grid クラスターに関する情報を受信し、保存します。クライアントは、サーバーがクラスターに参加またはクラスターから離脱するたびに変更するクラスタートポロジーの内部マッピングを維持します。

クラスタートポロジーを受信するには、クライアントには、起動時に少なくとも 1 つの Hot Rod サーバーのアドレス(IP:HOST)が必要です。クライアントがサーバーに接続すると、Data Grid はトポロジーをクライアントに送信します。サーバーがクラスターに参加またはクラスターから離脱すると、Data Grid は更新されたトポロジーをクライアントに送信します。

ディストリビューション対応

クライアントはトポロジーに対応し、キーの一貫したハッシュ値を保存します。

たとえば、put (k,v) 操作を取ります。クライアントはキーのハッシュ値を計算して、データが存在する正確なサーバーを見つけられるようにします。その後、クライアントは所有者に直接接続して操作をディスパッチできます。

ディストリビューション対応インテリジェンスの利点は、Data Grid サーバーがキーハッシュに基づいて値を検索する必要がないことです。これは、サーバー側で使用するリソースが少なくなることです。もう 1 つの利点は、サーバーが追加のネットワークラウンドトリップをスキップするため、クライアント要求により迅速に応答することです。

2.3.1. バランシングの要求

topology-aware インテリジェンスを使用するクライアントは、すべてのリクエストに対してリクエストバランシングを使用します。デフォルトのバランシングストラテジーはラウンドロビンであるため、トポロジー対応のクライアントは常にラウンドロビン順でサーバーにリクエストを送信します。

たとえば、s1s2s3 は Data Grid クラスターのサーバーです。クライアントは以下のようにリクエストバランシングを実行します。

CacheContainer cacheContainer = new RemoteCacheManager();
Cache<String, String> cache = cacheContainer.getCache();

//client sends put request to s1
cache.put("key1", "aValue");
//client sends put request to s2
cache.put("key2", "aValue");
//client sends get request to s3
String value = cache.get("key1");
//client dispatches to s1 again
cache.remove("key2");
//and so on...

分散対応インテリジェンスを使用するクライアントは、失敗したリクエストにのみ要求の分散を使用します。リクエストが失敗すると、分散対応のクライアントは次に利用可能なサーバーでリクエストを再試行します。

カスタムバランシングポリシー

FailoverRequestBalancingStrategy を実装し、以下のプロパティーを使用して hotrod-client.properties 設定でクラスを指定できます。

infinispan.client.hotrod.request_balancing_strategy

2.3.2. クライアントフェイルオーバー

Hot Rod クライアントは、Data Grid クラスタートポロジーが変更されたときに自動的にフェイルオーバーできます。たとえば、トポロジー対応の Hot Rod クライアントは、1 つ以上の Data Grid サーバーに障害が発生したことを検出できます。

クラスター化された Data Grid サーバー間のフェイルオーバーに加えて、HotRod クライアントは Data Grid クラスター間でフェイルオーバーをすることができます。

たとえば、ニューヨーク (NYC) で実行している Data Grid クラスターと、ロンドン (LON) で実行している別のクラスターがあるとします。NYCに要求を送信するクライアントは、使用可能なノードがないことを検出したため、LONのクラスターに切り替えます。その後、クライアントは、手動でクラスターを切り替えるか、フェイルオーバーが再度発生するまで、LONへの接続を維持します。

フェイルオーバーを伴うトランザクションキャッシュ

putIfAbsent()replace()remove() などの条件付きオペレーションには、厳密なメソッドの戻り保証があります。同様に、一部のオペレーションでは、以前の値を返さないといけない場合があります。

Hot Rod クライアントはフェイルオーバーが可能ですが、トランザクションキャッシュを使用して、操作が部分的に完了せず、異なるノードに競合するエントリーが残らないようにする必要があります。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.