DSEドライバーを使用したロード・バランス機能
DataStaxドライバーは、DSEクラスター全体での着信負荷の分散を制御します。
DataStaxドライバーは、DSEクラスター全体での着信負荷の分散を制御します。「ロード・バランス・ポリシー」により、クエリーを実行するためのコーディネーターになるクラスター内のノードが決まります。ドライバーが作成および維持する接続プールを持つノードはロード・バランス・ポリシーにより決まるため、アプリケーション開発中にロード・バランス・ポリシーを決定してください。ほとんどのデプロイでは、デフォルトのロード・バランス・ポリシーを使用します。
C/C++ | C# | Java | Node.js | PHP | Python | Ruby |
コーディネーターの選択
クエリーが実行されるたびに、ロード・バランス・ポリシーは、どのホストがクエリーを受信する資格があるかを決定するクエリー・プランを返します。ドライバーは、リストの最初のホストを使用して要求を実行し、後続のホストはリトライおよび推測的実行のために残しておきます。
トークン認識
トークン認識は、すべてのドライバーで共通です。トークン認識では、指定されたクエリーとパラメーターのプライマリキー情報を使用してレプリカ・ノードを取得します。このポリシーは、レプリカを選択することにより、クエリー用に選択されたコーディネーターが、書き込みまたは取得されたデータを所有することを保証し、サーバー側の追加のネットワーク接続を回避します。
正確なクエリー・ルーティングを取得するために、プリペアド・ステートメントの実行用のキーが自動的に計算されます。
データ・センター認識
ユース・ケースによっては、データが可能な限り効率的にユーザーに返されるように、アプリケーション要求を特定のデータ・センターに限定する必要があります。
グローバル・アプリケーションでは、北米のユーザーからの要求は、北米のデータ・センターに送信する必要があります。ヨーロッパのユーザーからの要求は、ヨーロッパのデータ・センターにルーティングする必要があります。これを実現するには、ロード・バランス・ポリシーでローカル・データ・センターを指定して、ドライバーがこのクエリーをより効率的にルーティングするようにします。
ローカル・データ・センターへの要求が成功しなかった場合、多くのドライバーは、リモート・データ・センター・ホストを使用してクエリーを実行することをサポートします。これはデータ・センターのフェイルオーバーを実現する方法のように見えるかもしれませんが、この機能は多くの場合、アプリケーションで予期しないレイテンシーと動作を引き起こします。詳細については、この「Cassandra:Local_Quorum Should Stay Local」ブログ投稿を参照してください。
デフォルトのロード・バランス・ポリシー
DataStaxドライバーは、トークン認識とデータ・センター認識のベスト・プラクティスをデフォルトのロード・バランス・ポリシーに統合します。具体的には、デフォルトのポリシーは、指定されたトークンのレプリカを取得し、最初にローカル・データ・センター内のレプリカを含むホストのリストを返し、次に指定されたローカル・データ・センター内の残りのノードを返します。デフォルトのロード・バランス・ポリシー、負荷分散のアルゴリズムを使用して、レプリカ・ノード間で負荷を公平に分散させます。
ロード・バランス機能のカスタマイズ
アプリケーションでカスタム・ルーティングとロード・バランス機能が必要な場合は、既存の負荷分散インターフェイスを拡張できます。カスタム・ロード・バランス機能は、ホワイトリスト・ロード・バランス・ポリシーとブラックリスト・ロード・バランス・ポリシーを通じて提供されます。ホワイトリスト・ロード・バランス・ポリシーとブラックリスト・ロード・バランス・ポリシーについては、個々のドライバーのドキュメントを参照してください。ロード・バランス・ポリシーのカスタマイズは難易度の高いトピックです。カスタム・ロード・バランス・ポリシーを実装する前に、既存のポリシーを検討してください。