13

Datastax Cassandra Driver の接続プーリングを理解しようとしているので、Web サービスでより適切に使用できます。

ドキュメントのバージョン 1.0 があります。それは言います:

Java ドライバーは接続を非同期で使用するため、複数の要求を同じ接続で同時に送信できます。

彼らは接続によって何を理解していますか?クラスターに接続する場合、ビルダー、クラスター、およびセッションがあります。それらのどれが接続されていますか?

たとえば、次のパラメータがあります。

maxSimultaneousRequestsPerConnection - ホストへのすべての接続での同時要求の数。その後、さらに接続が作成されます。

したがって、これらの接続は、接続プールの場合に自動的に作成されます (これは私が期待することです)。しかし、接続は正確には何ですか?オブジェクトをクラスター化しますか? セッション?

Web サービスで何を「静的」に保つかを決定しようとしています。とりあえず、Builder を静的にしておくことにしたので、呼び出しごとに新しい Cluster と新しい Session を作成します。これでよろしいですか?クラスターが接続の場合は、問題ありません。しかし、そうですか?ここで、ロガーは呼び出しごとに次のように言います。

2013:12:06 12:05:50 DEBUG Cluster:742 - 接点を持つ新しいクラスターの開始

2013:12:06 12:05:50 DEBUG ControlConnection:216 - [接続の制御] ノード リストとトークン マップの更新

2013:12:06 12:05:50 DEBUG ControlConnection:219 - [コントロール接続] スキーマの更新

2013:12:06 12:05:50 DEBUG ControlConnection:147 - [制御接続] 正常に接続されました...

それで、毎回クラスターに接続しますか?それは私が望むものではありません。接続を再利用したいのです。

では、接続は実際にはセッションですか? この場合、ビルダーではなくクラスターを静的に保つ必要があります。

可能な限り接続を再利用するには、どのメソッドを呼び出す必要がありますか?

4

3 に答える 3

8

おっしゃる通り、接続は実際にはセッション内にあり、セッションは、DAO に渡して Cassandra に書き込むオブジェクトです。

同じ Session オブジェクトを使用している限り、接続を再利用する必要があります (Session が接続プールであることがわかります)。

編集(2017/4/10):@William Price oneに続いて、この回答を正確にしました。この回答は 4 年前のものであり、その間に Cassandra はかなり変更されていることに注意してください。

于 2013-12-06T12:26:48.763 に答える
4

コミュニティの更新のみです。次の方法で接続プールを設定できます

private static Cluster cluster;

cluster.getConfiguration().getPoolingOptions().setMaxConnectionsPerHost(HostDistance.LOCAL,100);
于 2015-02-17T05:30:40.517 に答える