10

私は最近、Cassandra のユースケースに Datastax Java ドライバーを使い始めました... Cassandra への読み取り/書き込みに Datastax Java ドライバーを使用します...

Datastax Javaドライバーを使用してCassandra接続を正常に作成できました...しかし、Cassandraへの接続中にDatastax Javaドライバーを使用してパフォーマンスを向上させるために、本番環境で使用する必要がある他の設定はありますか?

/**
 * Creating Cassandra connection using Datastax driver
 *
 */
private DatastaxConnection() {

    try{
        builder = Cluster.builder();
        builder.addContactPoint("some-node");

        // Can anybody explain me what does below piece of code do?

        builder.poolingOptions().setCoreConnectionsPerHost(
                HostDistance.LOCAL,
                builder.poolingOptions().getMaxConnectionsPerHost(HostDistance.LOCAL));

        // And also what does below piece of code is doing?       
        cluster = builder
                .withRetryPolicy(DowngradingConsistencyRetryPolicy.INSTANCE)
                .withReconnectionPolicy(new ConstantReconnectionPolicy(100L))
                .build();

        StringBuilder s = new StringBuilder();
        Set<Host> allHosts = cluster.getMetadata().getAllHosts();
        for (Host h : allHosts) {
            s.append("[");
            s.append(h.getDatacenter());
            s.append("-");
            s.append(h.getRack());
            s.append("-");
            s.append(h.getAddress());
            s.append("]");
        }
        System.out.println("Cassandra Cluster: " + s.toString());

        session = cluster.connect("testdatastaxks");
    } catch (NoHostAvailableException e) {

    } catch (Exception e) {

    }
}

私の最優先事項は次のとおりです:-

  • ローカル データセンターに基づいて Cassandra ノードを除外します。したがって、接続プールには、ローカル データセンターの Cassandra ノードのみが含まれます。
  • また、Datastax Java ドライバーを特定の設定で使用すると、最高のパフォーマンスが得られます。

環境によって特定の設定が異なる可能性があることは承知していますが、Datastax Java ドライバーを使用して Cassandra 接続を行う際に最適なパフォーマンスを得るためには、誰もが従わなければならない設定があるかもしれません。

以前使っていたアステュアナクスの例のように、TOKEN_AWAREを使う必要があるということでした...

では、Datastax Java ドライバーを使用しているときに、いくつかの最適な設定や推奨される設定があるはずですか?

4

2 に答える 2

4

ローカル データセンターに基づいて Cassandra ノードを除外します。したがって、接続プールには、ローカル データセンターの Cassandra ノードのみが含まれます。

次に、 DCAwareRoundRobinPolicyを使用する必要があります。

以前使っていたアステュアナックスの例のように、TOKEN_AWAREを使う必要があるということでした...

これは DataStax Java ドライバーにも当てはまります。これはTokenAwarePolicyと呼ばれ、上記の DCAwareRoundRobinPolicy の上で使用できます。

環境によって特定の設定が異なる可能性があることは承知していますが、Datastax Java ドライバーを使用して Cassandra 接続を行う際に最適なパフォーマンスを得るためには、誰もが従わなければならない設定があるかもしれません。

「すべての人」を代弁することはできませんが、上記の負荷分散ポリシーを適切に選択しないと、残りは環境に依存する可能性が高くなります。ただし、もちろん、パフォーマンスを重視する場合は、構成のさまざまな設定と現実的なワークロードを試して、何かが役立つかどうかを確認することをお勧めします

于 2013-11-05T11:08:20.347 に答える