私は最近、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 ドライバーを使用しているときに、いくつかの最適な設定や推奨される設定があるはずですか?